------- Comment #6 from hubicka at ucw dot cz 2010-07-19 23:50 ------- Subject: Re: weak aliases LTO with gold causes ICE in lto_symtab_merge_decls_1
Hi, try this one Index: lto-symtab.c =================================================================== --- lto-symtab.c (revision 162310) +++ lto-symtab.c (working copy) @@ -783,9 +783,25 @@ lto_symtab_merge_cgraph_nodes_1 (void ** for (e = prevailing->next; e; e = e->next) { if (e->node != NULL) - lto_cgraph_replace_node (e->node, prevailing->node); + { + if (!prevailing->node) + { + gcc_assert (!e->node->analyzed); + prevailing->node = cgraph_node (prevailing->decl); + prevailing->node->alias = true; + } + lto_cgraph_replace_node (e->node, prevailing->node); + } if (e->vnode != NULL) - lto_varpool_replace_node (e->vnode, prevailing->vnode); + { + if (!prevailing->vnode) + { + gcc_assert (!e->vnode->finalized); + prevailing->vnode = varpool_node (prevailing->decl); + prevailing->vnode->alias = true; + } + lto_varpool_replace_node (e->vnode, prevailing->vnode); + } } /* Drop all but the prevailing decl from the symtab. */ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44966