[Bug middle-end/48585] [4.7 Regression] 483.xalancbmk in SPEC CPU 2006 failed to build
jamborm at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 13 14:56:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48585
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu.org
--- Comment #3 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-04-13 14:55:48 UTC ---
Compilation segfaults in LTRANS stage on line 1738 in tree-inline.c
(the assert below) because the dereferenced dest is zero.
/* Constant propagation on argument done during inlining
may create new direct call. Produce an edge for it. */
if ((!edge
|| (edge->indirect_inlining_edge
&& id->transform_call_graph_edges == CB_CGE_MOVE_CLONES))
&& (fn = gimple_call_fndecl (stmt)) != NULL)
{
struct cgraph_node *dest = cgraph_get_node (fn);
/* We have missing edge in the callgraph. This can happen
when previous inlining turned an indirect call into a
direct call by constant propagating arguments or we are
producing dead clone (for further cloning). In all
other cases we hit a bug (incorrect node sharing is the
most common reason for missing edges). */
gcc_assert (dest->needed || !dest->analyzed
|| dest->address_taken
|| !id->src_node->analyzed
|| !id->dst_node->analyzed);
fn is <function_decl 0x7ffff65d3300 __comp_dtor>
id->transform_call_graph_edges is CB_CGE_MOVE_CLONES
calling cgraph_edge (id->dst_node, stmt) from within the debugger
(to get edge which it says is optimized out) returns NULL.
I'd rather avoid calling cgraph_get_create_node here, the node should
be created by whatever inserts it into the IL. Let me check whether
the bug goes away if I disable IPA-CP first.
More information about the Gcc-bugs
mailing list