https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114262
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |documentation --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The C++ front-end does: /* Handle gnu_inline attribute. */ if (GNU_INLINE_P (decl1)) { DECL_EXTERNAL (decl1) = 1; DECL_NOT_REALLY_EXTERN (decl1) = 0; DECL_INTERFACE_KNOWN (decl1) = 1; DECL_DISREGARD_INLINE_LIMITS (decl1) = 1; } C front-end does: /* For GNU C extern inline functions disregard inline limits. */ if (DECL_EXTERNAL (fndecl) && DECL_DECLARED_INLINE_P (fndecl) && (flag_gnu89_inline || lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (fndecl)))) DECL_DISREGARD_INLINE_LIMITS (fndecl) = 1; This specifically from r0-82849-gc536a6a77a19a8 but it was done different before that (using a language hook). https://gcc.gnu.org/pipermail/gcc-patches/2007-July/221806.html https://gcc.gnu.org/pipermail/gcc-patches/2007-August/223406.html It looks like it has been this way since r0-37737-g4838c5ee553f06 (2001) (or rather that is when it was used by the tree inline; I don't want to dig further back to understand the RTL inliner). So looks like this is just missing documentation ...