diff options
author | Richard Henderson <rth@redhat.com> | 2001-07-15 08:47:05 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-07-15 08:47:05 -0700 |
commit | c319629b9a95ef4d8382cb86647589ee06f837d1 (patch) | |
tree | 75e68a4d9edfabe45a1cb8b284f932ff4f37e9b2 /gcc/flow.c | |
parent | 25e21aed5640682f693cd304b2d24007d797ce7d (diff) | |
download | gcc-c319629b9a95ef4d8382cb86647589ee06f837d1.zip gcc-c319629b9a95ef4d8382cb86647589ee06f837d1.tar.gz gcc-c319629b9a95ef4d8382cb86647589ee06f837d1.tar.bz2 |
flow.c (redirect_edge_and_branch_force): Initialize global_live_at_start and global_live_at_end.
* flow.c (redirect_edge_and_branch_force): Initialize
global_live_at_start and global_live_at_end.
(allocate_bb_life_data): Export.
* basic-block.h (allocate_bb_life_data): Declare it.
* toplev.c (rest_of_compilation): Call it.
From-SVN: r44023
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -483,7 +483,6 @@ static void flow_loop_tree_node_add PARAMS ((struct loop *, struct loop *)); static void flow_loops_tree_build PARAMS ((struct loops *)); static int flow_loop_level_compute PARAMS ((struct loop *, int)); static int flow_loops_level_compute PARAMS ((struct loops *)); -static void allocate_bb_life_data PARAMS ((void)); static void find_sub_basic_blocks PARAMS ((basic_block)); static bool redirect_edge_and_branch PARAMS ((edge, basic_block)); static basic_block redirect_edge_and_branch_force PARAMS ((edge, basic_block)); @@ -1933,6 +1932,15 @@ redirect_edge_and_branch_force (e, target) new_edge->probability = e->probability; new_edge->count = e->count; + if (e->dest->global_live_at_start) + { + new_bb->global_live_at_start = OBSTACK_ALLOC_REG_SET (&flow_obstack); + new_bb->global_live_at_end = OBSTACK_ALLOC_REG_SET (&flow_obstack); + COPY_REG_SET (new_bb->global_live_at_start, + e->dest->global_live_at_start); + COPY_REG_SET (new_bb->global_live_at_end, new_bb->global_live_at_start); + } + /* Wire edge in. */ new_edge->src = e->src; new_edge->dest = new_bb; @@ -4675,7 +4683,7 @@ calculate_global_regs_live (blocks_in, blocks_out, flags) /* Allocate the permanent data structures that represent the results of life analysis. Not static since used also for stupid life analysis. */ -static void +void allocate_bb_life_data () { register int i; |