https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62148
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- from https://gcc.gnu.org/onlinedocs/gcc-4.9.1/cpp/Preprocessor-Output.html : ‘3’ This indicates that the following text comes from a system header file, so certain warnings should be suppressed. ‘4’ This indicates that the following text should be treated as being wrapped in an implicit extern "C" block. ... As an extension, the preprocessor accepts linemarkers in non-assembler input files. They are treated like the corresponding ‘#line’ directive, (see Line Control), except that trailing flags are permitted, and are interpreted with the meanings described above. If multiple flags are given, they must be in ascending order. --- CUT ---- So from reading point of view this looks correct. So the preprocessor is maybe emitting the wrong # line. So we need a testcase where the preprocessor is emitting those lines.