This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/46823] [4.6 Regression] ICE: edge points to wrong declaration
- From: "jamborm at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 7 Jan 2011 13:04:55 +0000
- Subject: [Bug middle-end/46823] [4.6 Regression] ICE: edge points to wrong declaration
- Auto-submitted: auto-generated
- References: <bug-46823-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46823
Martin Jambor <jamborm at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu.org
--- Comment #8 from Martin Jambor <jamborm at gcc dot gnu.org> 2011-01-07 13:04:53 UTC ---
For the record, my current hypothesis is that in verify_cgraph_node,
in condition
else if (!e->callee->global.inlined_to
&& decl
&& cgraph_get_node (decl)
&& (e->callee->former_clone_of
!= cgraph_get_node (decl)->decl)
&& !clone_of_p (cgraph_node (decl),
e->callee))
the (e->callee->former_clone_of != cgraph_get_node (decl)->decl) is
insufficient in the sense that it should be accompanied with
&& (!e->callee->former_clone_of
|| (e->callee->former_clone_of
!= cgraph_get_node (decl)->former_clone_of))
Basically what happens that cgraph_node (decl) and e->callee have the
same former_clone_of one is not clone of each other. I am now about
to investigate how exactly this appears in the IL to be sure it can
actually happen legitimately.