In the file gcc/recog.h the struct "insn_data" has a member "genfun" which is of type "insn_gen_fn". This type is defined as "typedef rtx (*insn_gen_fn) (rtx, ...);" which is a pointer to a function which has an ellipsis as its second argument. The actual implementations of the functions are however not implemented with this ellipsis, and does not use the va_arg stuff in <stdarg.h> in order to get the anonymous argumenst. I think some of these functions are generated from the *.md file by the genemit program. For hosts which does have an ABI in where anonymous arguments are passed in a different manner than named arguments (Which is legal c-code according to C89) the compilation of gcc can produce a non-working gcc executable.
-- Summary: GCC source code does not conform to 3.3.2.2 of C89 C- standard Product: gcc Version: 3.4.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rpedersen at atmel dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18193