http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51929
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-10
11:27:39 UTC ---
What happens is that cgraph_materialize_clone on the _ZN1BIcEC2E1Ai.constprop.1
clone performs:
2451 if (!node->clone_of->analyzed && !node->clone_of->clones)
2452 {
2453 cgraph_release_function_body (node->clone_of);
2454 cgraph_node_remove_callees (node->clone_of);
2455 ipa_remove_all_references (&node->clone_of->ref_list);
2456 }
2457 node->clone_of = NULL;
where node->clone_of is _ZN1BIcEC2E1Ai, i.e. the __base_ctor and so the
verification fails.
Even before this cgraph_remove_unreachable_nodes marks the _ZN1BIcEC1E1Ai (i.e.
__comp_ctor to which the call_stmts still refer) as unreachable and calls
ipa_remove_all_references on it, which means I don't see a way how we could get
from the _ZN1BIcEC2E1Ai to _ZN1BIcEC1E1Ai node anymore.
Honza?