https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87525
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> --- GNU extern inline is an extension, so is covered by whatever we define (or should have defined). We've never required that the out of line and inline definitions are the same or in any way similar (prototypes have to match obviously), though without always_inline it is a compiler's choice what it will pick, whether it decides to inline it or not. AFAIK __fortify_function are extern inline __attribute__((always_inline, gnu_inline, aritifical)), so at that point the compiler needs to do what it is told, if it is possible to inline at all, inline, period. The additional complication is that those __fortify_function functions need to call the original out of line functions, and that is done through those aliases, with __asm redirects, so it is important to note in cgraph that those should not call those always inline extern inline gnu_inline functions, but the out of line ones.