https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85921
--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> --- On Fri, 25 May 2018, gcc at mailinator dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85921 > > --- Comment #2 from John Simon <gcc at mailinator dot com> --- > > Can you figure out who #defines noinline? > > Sure. Using -E -dD pointed to "/usr/include/linux/compiler.h" which has: > > ```c > /* > * From the GCC manual: > * > * Many functions do not examine any values except their arguments, > * and have no effects except the return value. Basically this is > * just slightly more strict class than the `pure' attribute above, > * since function is not allowed to read global memory. > * > * Note that a function that has pointer arguments and examines the > * data pointed to must _not_ be declared `const'. Likewise, a > * function that calls a non-`const' function usually must not be > * `const'. It does not make sense for a `const' function to return > * `void'. > */ > #ifndef __attribute_const__ > # define __attribute_const__ /* unimplemented */ > #endif > > #ifndef noinline > #define noinline > #endif > > #ifndef __always_inline > #define __always_inline inline > #endif > ``` :/ How does that get included? I suppose we could add an appropriate #undef to system.h after the offending include stmt with a comment.