* ifcvt.c (find_if_case_2): Don't allow THEN to be EXIT.

From-SVN: r34036
This commit is contained in:
Richard Henderson 2000-05-19 13:07:18 -07:00 committed by Richard Henderson
parent 228c4d97ec
commit b6cfd26443
2 changed files with 8 additions and 3 deletions

View File

@ -1,5 +1,7 @@
2000-05-19 Richard Henderson <rth@cygnus.com>
* ifcvt.c (find_if_case_2): Don't allow THEN to be EXIT.
* flow.c (make_edges): The sibling call edge to exit is abnormal.
2000-05-19 Richard Henderson <rth@cygnus.com>

View File

@ -1652,14 +1652,17 @@ find_if_case_2 (test_bb, then_edge, else_edge)
if (else_bb->pred->pred_next != NULL)
return FALSE;
/* THEN is not EXIT. */
if (then_bb->index < 0)
return FALSE;
/* ELSE is predicted or SUCC(ELSE) postdominates THEN. */
note = find_reg_note (test_bb->end, REG_BR_PROB, NULL_RTX);
if (note && INTVAL (XEXP (note, 0)) >= REG_BR_PROB_BASE / 2)
;
else if (else_succ->dest->index < 0
|| (then_bb->index >= 0
&& TEST_BIT (post_dominators[ORIG_INDEX (then_bb)],
ORIG_INDEX (else_succ->dest))))
|| TEST_BIT (post_dominators[ORIG_INDEX (then_bb)],
ORIG_INDEX (else_succ->dest)))
;
else
return FALSE;