aboutsummaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-06-10 22:16:10 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-06-10 22:16:10 -0700
commite16d045df7cc21834a3925da83e3c753d38d8566 (patch)
tree91677a44eb6f5847031d9b6c1be652bb26d4084a /gcc/ifcvt.c
parent68fe6226c8dfc2ab8349126b5a7fb47822860ef8 (diff)
downloadgcc-e16d045df7cc21834a3925da83e3c753d38d8566.zip
gcc-e16d045df7cc21834a3925da83e3c753d38d8566.tar.gz
gcc-e16d045df7cc21834a3925da83e3c753d38d8566.tar.bz2
ifcvt.c (life_data_ok): New.
* 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
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r--gcc/ifcvt.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 4e3c43e..aaa2056 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -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. */