------- Comment #10 from pinskia at gcc dot gnu dot org 2005-11-19 02:31
-------
Here is a shorter testcase:
long fff(int*);
long F2(int *node)
{
long call_result = 0;
if (call_result = fff(node))
goto error_free_node;
T(node);
return 0;
error_free_node:
T(node);
return call_result;
}
-------
The problem is related to that instruction pattern in comment #9, for some
reason we think it is just a jump so we remove the fall through edge and BB and
then we ICE as we have a conditional jump and only one edge.
any_condjump_p returns the correct value of one but cleanup edges must use a
different function to check for this. Looking more into this.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24626