diff options
author | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-11 18:02:15 +0000 |
---|---|---|
committer | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-11 18:02:15 +0000 |
commit | 3072d30e7983a3ca5ad030f1f98a5c39bcc2c07b (patch) | |
tree | fdb9e9f8a0700a2713dc690fed1a2cf20dae8392 /gcc/bb-reorder.c | |
parent | 8ceb1bfd33bc40bf0cbe1fab8903c2c31efd10ee (diff) | |
download | gcc-3072d30e7983a3ca5ad030f1f98a5c39bcc2c07b.tar.gz |
Merge dataflow branch into mainline
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/bb-reorder.c')
-rw-r--r-- | gcc/bb-reorder.c | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 27f24fc1c5e..79e9dbf0d7e 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -85,6 +85,7 @@ #include "params.h" #include "toplev.h" #include "tree-pass.h" +#include "df.h" #ifndef HAVE_conditional_execution #define HAVE_conditional_execution 0 @@ -1607,16 +1608,6 @@ fix_crossing_conditional_branches (void) last_bb->aux = new_bb; prev_bb = last_bb; last_bb = new_bb; - - /* Update register liveness information. */ - - new_bb->il.rtl->global_live_at_start = ALLOC_REG_SET (®_obstack); - new_bb->il.rtl->global_live_at_end = ALLOC_REG_SET (®_obstack); - COPY_REG_SET (new_bb->il.rtl->global_live_at_end, - prev_bb->il.rtl->global_live_at_end); - COPY_REG_SET (new_bb->il.rtl->global_live_at_start, - prev_bb->il.rtl->global_live_at_end); - /* Put appropriate instructions in new bb. */ new_label = gen_label_rtx (); @@ -1840,10 +1831,7 @@ fix_edges_for_rarely_executed_code (edge *crossing_edges, well. */ if (!HAS_LONG_UNCOND_BRANCH) - { - fix_crossing_unconditional_branches (); - reg_scan (get_insns (), max_reg_num ()); - } + fix_crossing_unconditional_branches (); add_reg_crossing_jump_notes (); } @@ -2205,13 +2193,11 @@ gate_handle_reorder_blocks (void) static unsigned int rest_of_handle_reorder_blocks (void) { - unsigned int liveness_flags; basic_block bb; /* Last attempt to optimize CFG, as scheduling, peepholing and insn splitting possibly introduced more crossjumping opportunities. */ - liveness_flags = (!HAVE_conditional_execution ? CLEANUP_UPDATE_LIFE : 0); - cfg_layout_initialize (CLEANUP_EXPENSIVE | liveness_flags); + cfg_layout_initialize (CLEANUP_EXPENSIVE); if (flag_sched2_use_traces && flag_schedule_insns_after_reload) { @@ -2224,14 +2210,7 @@ rest_of_handle_reorder_blocks (void) reorder_basic_blocks (); if (flag_reorder_blocks || flag_reorder_blocks_and_partition || (flag_sched2_use_traces && flag_schedule_insns_after_reload)) - cleanup_cfg (CLEANUP_EXPENSIVE | liveness_flags); - - /* On conditional execution targets we can not update the life cheaply, so - we deffer the updating to after both cleanups. This may lose some cases - but should not be terribly bad. */ - if (HAVE_conditional_execution) - update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES, - PROP_DEATH_NOTES); + cleanup_cfg (CLEANUP_EXPENSIVE); FOR_EACH_BB (bb) if (bb->next_bb != EXIT_BLOCK_PTR) @@ -2279,9 +2258,6 @@ rest_of_handle_partition_blocks (void) { no_new_pseudos = 0; partition_hot_cold_basic_blocks (); - allocate_reg_life_data (); - update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES, - PROP_LOG_LINKS | PROP_REG_INFO | PROP_DEATH_NOTES); no_new_pseudos = 1; return 0; } |