https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108675
--- Comment #6 from Zack Weinberg <zack+srcbugz at owlfolio dot org> --- Note that what you (mingw) have in this header is a pretty serious anti-optimization. Functions that call __builtin_va_start cannot be inlined under any circumstances whatsoever (try tagging it __attribute__((always_inline)) and see what happens) so you're emitting a redundant copy of this function in every translation unit that calls fprintf, and you're not getting any actual codegen improvement in exchange. You _could_ do like glibc bits/stdio2.h __mingw_ovr __attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) int printf (const char *__format, ...) { return __mingw_fprintf(stdout, __format, __builtin_va_arg_pack()); } but this doesn't let you synthesize a direct call to __mingw_vfprintf. I'd recommend scrapping the entire mess, abandoning the idea of getting direct calls to v*printf/v*scanf, and using asm() symbol renaming to add the __mingw_ prefix. That should also avoid stepping on the GCC testcases' toes.