http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48148
--- Comment #20 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-17 20:30:19 UTC --- Confirmed. Apparently DECL_ABSTRACT_ORIGIN is still NULL at the point where Richard changed it and DECL_EXTERNAL is being set. It is set during: #0 tree_function_versioning (old_decl=0x7ffff1d40300, new_decl=0x7ffff1d47000, tree_map=0x7ffff1d524b0, update_clones=1 '\001', args_to_skip=0x7ffff1d1be60, blocks_to_copy=0x0, new_entry=0x0) at ../../gcc/tree-inline.c:5058 #1 0x0000000002ab2fb1 in cgraph_materialize_clone (node=0x7ffff1d61000) at ../../gcc/cgraphunit.c:2175 #2 0x0000000002ab3901 in cgraph_materialize_all_clones () at ../../gcc/cgraphunit.c:2372 #3 0x0000000002ab2356 in cgraph_optimize () at ../../gcc/cgraphunit.c:1889 #4 0x00000000004ee63b in lto_main () at ../../gcc/lto/lto.c:2469 So, either tree_function_versioning needs to be changed not to set DECL_ABSTRACT_ORIGIN for DECL_EXTERNAL new_decls, or lto needs to fix it up somewhere else, or we need to go with one of the proposed dwarf2out.c changes.