http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57602
--- Comment #13 from Jan Hubicka <hubicka at ucw dot cz> --- > Please, let me know if more info is needed. Actually I got the same ICE in meantime. Here is improved patch (it is still testing for me) Index: cgraph.c =================================================================== *** cgraph.c (revision 201483) --- cgraph.c (working copy) *************** verify_cgraph_node (struct cgraph_node * *** 2363,2369 **** error ("inline clone in same comdat group list"); error_found = true; } ! if (!node->symbol.definition && node->local.local) { error ("local symbols must be defined"); error_found = true; --- 2363,2369 ---- error ("inline clone in same comdat group list"); error_found = true; } ! if (!node->symbol.definition && !node->symbol.in_other_partition && node->local.local) { error ("local symbols must be defined"); error_found = true; Index: ipa.c =================================================================== *** ipa.c (revision 201483) --- ipa.c (working copy) *************** symtab_remove_unreachable_nodes (bool be *** 376,382 **** { if (file) fprintf (file, " %s", cgraph_node_name (node)); ! cgraph_reset_node (node); changed = true; } } --- 376,390 ---- { if (file) fprintf (file, " %s", cgraph_node_name (node)); ! node->symbol.analyzed = false; ! node->symbol.definition = false; ! node->symbol.cpp_implicit_alias = false; ! node->symbol.alias = false; ! node->symbol.weakref = false; ! if (!node->symbol.in_other_partition) ! node->local.local = false; ! cgraph_node_remove_callees (node); ! ipa_remove_all_references (&node->symbol.ref_list); changed = true; } } *************** function_and_variable_visibility (bool w *** 888,894 **** } FOR_EACH_DEFINED_FUNCTION (node) { ! node->local.local = cgraph_local_node_p (node); /* If we know that function can not be overwritten by a different semantics and moreover its section can not be discarded, replace all direct calls --- 896,902 ---- } FOR_EACH_DEFINED_FUNCTION (node) { ! node->local.local |= cgraph_local_node_p (node); /* If we know that function can not be overwritten by a different semantics and moreover its section can not be discarded, replace all direct calls