------- 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