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: "markus at trippelsdorf dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 22 Dec 2011 12:51:08 +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 #4 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-12-22 12:51:08 UTC ---
(In reply to comment #3)
> 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?
libxul still fails to build with the same error message (but there is only
one instance of this ICE now instead of three before your patch).
Reducing...