[Bug c/68272] Unwanted out-of-line instances for C inline functions that are also GCC builtins.
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 10 16:58:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68272
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
This is not a standards conformance bug, on multiple grounds:
* The C standard does not permit you to define your own copies of standard
library functions (that is, functions in the standard you specified with
-std=, e.g. -std=c99; -std= controls which built-in functions are
present). All library function names are always reserved as identifiers
with external linkage, whether or not you include the corresponding
header.
* You're using 4.9, which defaults to -std=gnu89. gnu89 inline semantics
mean that plain "inline" functions *should* get out-of-line copies
generated in each translation unit. For C99 inline semantics you need an
appropriate -std option for versions before GCC 5 (which defaults to
-std=gnu11).
That said, it may be best anyway not to export such copies in C99 inlining
mode, if the only extern declaration is the implicit built-in one. But
you're well outside the standard if you try to do this.
More information about the Gcc-bugs
mailing list