------- Additional Comments From amodra at bigpond dot net dot au 2005-02-07 11:28 ------- Note that if you declare __builtin_printf and __builtin_puts with __attribute__((__longcall__)) as well as printf and puts, you will get the behaviour you expect.
The following patch also works, but I'm unsure of all the ramifications. As far as I can see, it seems that the only thing this will change is the name of the function declaration used in implicit builtin expansions. * c-common.c (builtin_function_2): Return normal decl rather than built-in decl if it is available. --- c-common.c~ 2005-02-07 21:17:05.660721258 +1030 +++ c-common.c 2005-02-07 21:48:16.568241150 +1030 @@ -3348,7 +3348,7 @@ builtin_function_2 (const char *builtin_ decl = lang_hooks.builtin_function (name, type, function_code, cl, NULL, attrs); - return (bdecl != 0 ? bdecl : decl); + return (decl != 0 ? decl : bdecl); } /* Nonzero if the type T promotes to int. This is (nearly) the -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19746