https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61412
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Matt Godbolt from comment #5) > In the original file the "# ..." > line came from the middle of a macro expansion defined by a header included > via an -isystem path. That's the real problem: we don't emit warnings for macros defined in system headers, even though the expansion of the macro is not in a system header. I think there's an existing report about that too. > The filename in the "# " line refers to the C++ file > though in both cases. But in a context that makes the compiler think it's a system header file. I think your reduction of the preprocessed output misled you to think the problem was related to all preprocessed output, but it's not.