https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107980
--- Comment #19 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 59789 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59789&action=edit gcc15-pr107980.patch In that case here is an untested patch. I've changed the macro to #define va_start(...) __builtin_c23_va_start(__VA_ARGS__) rather than #define va_start(v, ...) __builtin_c23_va_start(v __VA_OPT__(,) __VA_ARGS__) so that we diagnose even va_start (ap,); Is it a problem that va_start() won't be diagnosed during preprocessing and only during compilation?