diff options
author | Richard Henderson <rth@redhat.com> | 2001-06-10 22:16:10 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-06-10 22:16:10 -0700 |
commit | e16d045df7cc21834a3925da83e3c753d38d8566 (patch) | |
tree | 91677a44eb6f5847031d9b6c1be652bb26d4084a /gcc/ifcvt.c | |
parent | 68fe6226c8dfc2ab8349126b5a7fb47822860ef8 (diff) | |
download | gcc-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.c | 12 |
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. */ |