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.