OSDN Git Service

* ifcvt.c (find_if_case_2): Don't allow THEN to be EXIT.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 May 2000 20:07:18 +0000 (20:07 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 May 2000 20:07:18 +0000 (20:07 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34036 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ifcvt.c

index c8c6c95..5e4fc88 100644 (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>
index 2403651..371e560 100644 (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;