Hi! While the cpp_force_token_locations/cp_stop_forcing_token_locations pair forces BUILTINS_LOCATION upon tokens, the change introducing them removed cb_file_change/linemap_add, which is needed e.g. for proper line numbers of builtin defines in -g3 .debug_macro/.debug_macinfo.
Fixed by reverting that part of the 2011-08-22 changes, while keeping the forcing of BUILTINS_LOCATION. Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2014-03-21 Jakub Jelinek <ja...@redhat.com> PR debug/60603 c-family/ * c-opts.c (c_finish_options): Restore cb_file_change call to <built-in>. fortran/ * cpp.c (gfc_cpp_init): Restore cb_change_file call to <built-in>. testsuite/ * gcc.dg/debug/dwarf2/dwarf2-macro2.c: New test. --- gcc/c-family/c-opts.c.jj 2014-03-11 12:14:00.000000000 +0100 +++ gcc/c-family/c-opts.c 2014-03-21 11:07:04.287946639 +0100 @@ -1274,17 +1274,18 @@ c_finish_options (void) { size_t i; - { - /* Make sure all of the builtins about to be declared have - BUILTINS_LOCATION has their source_location. */ - source_location builtins_loc = BUILTINS_LOCATION; - cpp_force_token_locations (parse_in, &builtins_loc); + cb_file_change (parse_in, + linemap_add (line_table, LC_RENAME, 0, + _("<built-in>"), 0)); + /* Make sure all of the builtins about to be declared have + BUILTINS_LOCATION has their source_location. */ + source_location builtins_loc = BUILTINS_LOCATION; + cpp_force_token_locations (parse_in, &builtins_loc); - cpp_init_builtins (parse_in, flag_hosted); - c_cpp_builtins (parse_in); + cpp_init_builtins (parse_in, flag_hosted); + c_cpp_builtins (parse_in); - cpp_stop_forcing_token_locations (parse_in); - } + cpp_stop_forcing_token_locations (parse_in); /* We're about to send user input to cpplib, so make it warn for things that we previously (when we sent it internal definitions) --- gcc/fortran/cpp.c.jj 2014-01-09 21:07:24.000000000 +0100 +++ gcc/fortran/cpp.c 2014-03-21 11:10:00.973020640 +0100 @@ -576,6 +576,7 @@ gfc_cpp_init (void) if (gfc_option.flag_preprocessed) return; + cpp_change_file (cpp_in, LC_RENAME, _("<built-in>")); if (!gfc_cpp_option.no_predefined) { /* Make sure all of the builtins about to be declared have --- gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c.jj 2014-03-21 11:19:29.221017868 +0100 +++ gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c 2014-03-21 11:20:49.768580776 +0100 @@ -0,0 +1,7 @@ +/* Test to make sure the macro info includes the predefined macros with line number 0. */ +/* { dg-do compile } */ +/* { dg-options "-g3 -gdwarf -dA -fverbose-asm" } */ +/* { dg-final { scan-assembler "At line number 0" } } */ + +#define FOO 1 +int i; Jakub