[Bug middle-end/58789] [4.8 Regression] "internal compiler error: Segmentation fault" with external definition

jamborm at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Oct 24 17:22:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58789

--- Comment #5 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Well, IPA-CP devirtualization is required to trigger the bug but it is
a clone materialization problem.

The following line (invoked as a consequence of fold_stmt
devirtualization) in cgraph_update_edges_for_call_stmt_node causes the
bug:

      ne = cgraph_create_edge (node, cgraph_get_create_node (new_call),
                   new_stmt, count, frequency);

cgraph_get_create_node returns an inlined clone and it gets an extra
caller edge.  Verifier then complains there is an un-inlined edge to
an inlined node but the problem really is that there are two edges.

Either we need to make sure that we keep an un-inlined node for
devirtualization which cgraph_get_create_node can pick up until we are
done with materializations, ore need to backport and use
cgraph_get_create_real_symbol_node from
http://gcc.gnu.org/ml/gcc-patches/2013-03/msg00621.html



More information about the Gcc-bugs mailing list