https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83397
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to jos...@codesourcery.com from comment #3) > DR#317 explicitly confirms that () is not a prototype in a function > definition. Which is why I set the status to NEW to confirm the bug. > It's not valid in ISO C to call a variadic function without a prototype in > scope. To the extent that GCC allows for it, presumably it's for > compatibility with code that e.g. calls printf without including > <stdio.h>. Which seems to (very slightly) pessimize correct code for the benefit of undefined code (unless I'm mistaken GCC no longer supports any traditional pre-C89 dialect).