[Bug lto/57334] [4.9 regression] ICE: in input_gimple_stmt, at gimple-streamer-in.c:287
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jun 18 08:03:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57334
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Jan Hubicka from comment #6)
> I am testing
> Index: lto-symtab.c
> ===================================================================
> --- lto-symtab.c (revision 200151)
> +++ lto-symtab.c (working copy)
> @@ -523,7 +523,8 @@ lto_symtab_merge_decls (void)
>
> FOR_EACH_SYMBOL (node)
> if (lto_symtab_symbol_p (node)
> - && node->symbol.next_sharing_asm_name)
> + && (node->symbol.next_sharing_asm_name
> + || node->symbol.previous_sharing_asm_name))
> {
> symtab_node n;
>
> @@ -639,6 +640,7 @@ lto_symtab_prevailing_decl (tree decl)
> ret = symtab_node_for_asm (DECL_ASSEMBLER_NAME (decl));
> if (!ret)
> return decl;
> + gcc_checking_assert (TREE_PUBLIC (ret->symbol.decl) && !DECL_EXTERNAL
> (ret->symbol.decl));
>
> return ret->symbol.decl;
> }
The loop looks weird. It probably should be re-structured to a simple
FOR_EACH_SYMBOL (node)
if (!node->symbol.prev_sharing_asm_name
&& node->symbol.next_sharing_asm_name)
lto_symtab_merge_decls_1 (node);
and not put too much magic into it.
More information about the Gcc-bugs
mailing list