This moves it where it really belongs, also avoiding extra work for the slim LTO compile phase.
Bootstrapped and tested and gdb tested on x86_64-unknown-linux-gnu, applied. Richard. 2015-08-20 Richard Biener <rguent...@suse.de> * toplev.c (compile_file): Remove loop calling late_global_decl on all symbols. * varpool.c (varpool_node::assemble_decl): Call late_global_decl on decls we assembled. Index: gcc/toplev.c =================================================================== --- gcc/toplev.c (revision 226966) +++ gcc/toplev.c (working copy) @@ -580,15 +580,6 @@ compile_file (void) if (seen_error ()) return; - /* After the parser has generated debugging information, augment - this information with any new location/etc information that may - have become available after the compilation proper. */ - timevar_start (TV_PHASE_DBGINFO); - symtab_node *node; - FOR_EACH_DEFINED_SYMBOL (node) - debug_hooks->late_global_decl (node->decl); - timevar_stop (TV_PHASE_DBGINFO); - timevar_start (TV_PHASE_LATE_ASM); /* Compilation unit is finalized. When producing non-fat LTO object, we are Index: gcc/varpool.c =================================================================== --- gcc/varpool.c (revision 226966) +++ gcc/varpool.c (working copy) @@ -586,6 +586,12 @@ varpool_node::assemble_decl (void) gcc_assert (TREE_ASM_WRITTEN (decl)); gcc_assert (definition); assemble_aliases (); + /* After the parser has generated debugging information, augment + this information with any new location/etc information that may + have become available after the compilation proper. */ + timevar_start (TV_PHASE_DBGINFO); + debug_hooks->late_global_decl (decl); + timevar_stop (TV_PHASE_DBGINFO); return true; }