ifcvt.c (life_data_ok): New.
authorRichard Henderson <rth@redhat.com>
Mon, 11 Jun 2001 05:16:10 +0000 (22:16 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 11 Jun 2001 05:16:10 +0000 (22:16 -0700)
        * ifcvt.c (life_data_ok): New.
        (merge_if_block): Use it to determine whether to update
        global_live_at_end.
        (if_convert): Set it.

From-SVN: r43170

gcc/ChangeLog
gcc/ifcvt.c

index c7f94dacb95090d1a5d7b50f2e2ed5dde45240a4..65f0cb7436ba0164a2c9cb125329e1c64c1ec44d 100644 (file)
@@ -1,3 +1,10 @@
+2001-06-10  Richard Henderson  <rth@redhat.com>
+
+       * ifcvt.c (life_data_ok): New.
+       (merge_if_block): Use it to determine whether to update
+       global_live_at_end.
+       (if_convert): Set it.
+
 2001-06-10  Richard Henderson  <rth@redhat.com>
 
        * config/alpha/osf5.h (ASM_OLDAS_SPEC): Add -c.
index 4e3c43ec5df6906d77b8adfe4f42daa47563fbe4..aaa205663761ccb982abd7450d3c59ce3bc536bd 100644 (file)
@@ -66,6 +66,9 @@ static int num_updated_if_blocks;
 /* # of basic blocks that were removed.  */
 static int num_removed_blocks;
 
+/* True if life data ok at present.  */
+static bool life_data_ok;
+
 /* The post-dominator relation on the original block numbers.  */
 static sbitmap *post_dominators;
 
@@ -1719,7 +1722,7 @@ merge_if_block (test_bb, then_bb, else_bb, join_bb)
   /* First merge TEST block into THEN block.  This is a no-brainer since
      the THEN block did not have a code label to begin with.  */
 
-  if (combo_bb->global_live_at_end)
+  if (life_data_ok)
     COPY_REG_SET (combo_bb->global_live_at_end, then_bb->global_live_at_end);
   merge_blocks_nomove (combo_bb, then_bb);
   num_removed_blocks++;
@@ -1759,7 +1762,7 @@ merge_if_block (test_bb, then_bb, else_bb, join_bb)
   else if (join_bb->pred == NULL || join_bb->pred->pred_next == NULL)
     {
       /* We can merge the JOIN.  */
-      if (combo_bb->global_live_at_end)
+      if (life_data_ok)
        COPY_REG_SET (combo_bb->global_live_at_end,
                      join_bb->global_live_at_end);
       merge_blocks_nomove (combo_bb, join_bb);
@@ -2444,14 +2447,15 @@ dead_or_predicable (test_bb, merge_bb, other_bb, new_dest, reversep)
 /* Main entry point for all if-conversion.  */
 
 void
-if_convert (life_data_ok)
-     int life_data_ok;
+if_convert (x_life_data_ok)
+     int x_life_data_ok;
 {
   int block_num;
 
   num_possible_if_blocks = 0;
   num_updated_if_blocks = 0;
   num_removed_blocks = 0;
+  life_data_ok = (x_life_data_ok != 0);
 
   /* Free up basic_block_for_insn so that we don't have to keep it 
      up to date, either here or in merge_blocks_nomove.  */