This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/51650] [4.7 regression] LTO ICE in dwarf2out_finish, at dwarf2out.c:22501 while building libxul
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 22 Dec 2011 12:00:27 +0000
- Subject: [Bug debug/51650] [4.7 regression] LTO ICE in dwarf2out_finish, at dwarf2out.c:22501 while building libxul
- Auto-submitted: auto-generated
- References: <bug-51650-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51650
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-22 12:00:27 UTC ---
In non-LTO mode we create the DIE for 'C' (which we do not create at all
with -flto) via
#3 0x0000000000d54c57 in rest_of_type_compilation (type=0x7ffff5b8f3f0,
toplev=1) at /space/rguenther/src/svn/trunk/gcc/passes.c:238
238 debug_hooks->type_decl (TYPE_STUB_DECL (type), !toplev);
we do not do something equivalent for LTO (but LTO expects to have those
DIEs created lazily ...). But dwarf2out isn't prepared to deal with
this situation it seems :/
I'm not sure we want to add corresponding debug_hooks calls to the LTO
machinery, but if, then one place to do that would be here:
Index: gcc/lto/lto.c
===================================================================
--- gcc/lto/lto.c (revision 182617)
+++ gcc/lto/lto.c (working copy)
@@ -881,6 +881,8 @@ uniquify_nodes (struct data_in *data_in,
lto_register_var_decl_in_symtab (data_in, t);
else if (TREE_CODE (t) == FUNCTION_DECL && !DECL_BUILT_IN (t))
lto_register_function_decl_in_symtab (data_in, t);
+ else if (!flag_wpa && TREE_CODE (t) == TYPE_DECL)
+ debug_hooks->type_decl (t, DECL_FILE_SCOPE_P (t));
else if (TYPE_P (t) && !TYPE_CANONICAL (t))
TYPE_CANONICAL (t) = gimple_register_canonical_type (t);
}
but I'm not sure we won't confuse dwarf2out.c with the order we are
calling type_decl () either (might be we start with T, and then the
one for its context C). The above patch fixes the reduced testcase at
least.
Markus, can you give it a shot?