http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |NEW
AssignedTo|rguenth at gcc dot gnu.org |unassigned at gcc dot
| |gnu.org
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> 2013-04-11
11:29:39 UTC ---
-fno-builtin-XXX does not prevent GCC from emitting calls to XXX. It only
makes GCC not assume anything about existing calls to XXX.
For example to avoid transforming printf to puts in
extern int printf(const char *, ...);
int main()
{
printf ("Hello World\n");
return 0;
}
it does not work to specify -fno-builtin-puts, but instead you need to
provide -fno-builtin-printf.
Note that -fno-builtin only prevents the C family parsers from recognizing
XXX as builtin decls. The fact that -fno-builtin was specified or not
cannot be queried in any way from the middle-end.
I consider the inability to specify this to the GCC middle-end as bug
but I am not going to work on it. The requirement to be able to
generate calls to memset. memcpy and memmove is deep-rooted into
code-expansion as well for aggregate init and assignment.