ifcvt.c (find_if_block): Move the check for the number of edges above the loops check...
authorAndrew Pinski <pinskia@physics.uc.edu>
Thu, 18 Nov 2004 14:44:54 +0000 (14:44 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Thu, 18 Nov 2004 14:44:54 +0000 (06:44 -0800)
2004-11-18  Andrew Pinski  <pinskia@physics.uc.edu>

        * ifcvt.c (find_if_block): Move the check for the number of edges
        above the loops checking for complex edges.
        Remove the counting of edges as we use EDGE_COUNT now.

From-SVN: r90865

gcc/ChangeLog
gcc/ifcvt.c

index 148fb0baa38a2ce2a137f5650e90939d7c602877..857a5a6aa9826c4b7fcc4cb1b584ee1cbe71275b 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-18  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * ifcvt.c (find_if_block): Move the check for the number of edges
+       above the loops checking for complex edges.
+       Remove the counting of edges as we use EDGE_COUNT now.
+
 2004-11-18  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.comn>
 
        * config/m32r/linux.h (TARGET_ASM_FILE_END): Set
index 554131126472f5747908c0b477ba8173609d675e..b2275d07610d5a668723598121946ec6592bbd20 100644 (file)
@@ -2445,8 +2445,6 @@ find_if_block (struct ce_if_block * ce_info)
   basic_block then_bb = ce_info->then_bb;
   basic_block else_bb = ce_info->else_bb;
   basic_block join_bb = NULL_BLOCK;
-  int then_predecessors;
-  int else_predecessors;
   edge cur_edge;
   basic_block next;
   edge_iterator ei;
@@ -2511,28 +2509,24 @@ find_if_block (struct ce_if_block * ce_info)
        }
     }
 
-  /* Count the number of edges the THEN and ELSE blocks have.  */
-  then_predecessors = 0;
+  /* The THEN block of an IF-THEN combo must have exactly one predecessor,
+     other than any || blocks which jump to the THEN block.  */
+  if ((EDGE_COUNT (then_bb->preds) - ce_info->num_or_or_blocks) != 1)
+    return FALSE;
+    
+  /* The edges of the THEN and ELSE blocks cannot have complex edges.  */
   FOR_EACH_EDGE (cur_edge, ei, then_bb->preds)
     {
-      then_predecessors++;
       if (cur_edge->flags & EDGE_COMPLEX)
        return FALSE;
     }
 
-  else_predecessors = 0;
   FOR_EACH_EDGE (cur_edge, ei, else_bb->preds)
     {
-      else_predecessors++;
       if (cur_edge->flags & EDGE_COMPLEX)
        return FALSE;
     }
 
-  /* The THEN block of an IF-THEN combo must have exactly one predecessor,
-     other than any || blocks which jump to the THEN block.  */
-  if ((then_predecessors - ce_info->num_or_or_blocks) != 1)
-    return FALSE;
-
   /* The THEN block of an IF-THEN combo must have zero or one successors.  */
   if (EDGE_COUNT (then_bb->succs) > 0
       && (EDGE_COUNT (then_bb->succs) > 1