https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69391
--- Comment #5 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Manuel López-Ibáñez from comment #4) > (In reply to Jakub Jelinek from comment #3) > > This changed behavior with r213102 aka PR61861. > > Perhaps this comment is relevant? > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61861#c8 But the patch by Dodji is also wrong with rspect to this: "I think the problem is that enter_macro_context() is passed the location of the expansion point of the macro that is about to be expanded. But when that macro is built-in, builtin_macro() that is then called by enter_macro_context() doesn't use the macro expansion point location when expanding the __LINE__ builtin (in, e.g, _cpp_builtin_macro_text) . Rather, what it used is the location of the closing parenthesis of the enclosing function-like macro invocation or, more generally, the location of the previous token in the stream." according to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61817#c3