aboutsummaryrefslogtreecommitdiff
path: root/gcc/bb-reorder.c
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@gcc.gnu.org>2007-06-11 18:02:15 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2007-06-11 18:02:15 +0000
commit6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb (patch)
treefdb9e9f8a0700a2713dc690fed1a2cf20dae8392 /gcc/bb-reorder.c
parenta91d32a4a65d54cccf639a1541417e39cb7b7deb (diff)
downloadgcc-6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb.zip
gcc-6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb.tar.gz
gcc-6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb.tar.bz2
Merge dataflow branch into mainline
From-SVN: r125624
Diffstat (limited to 'gcc/bb-reorder.c')
-rw-r--r--gcc/bb-reorder.c32
1 files changed, 4 insertions, 28 deletions
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index 27f24fc..79e9dbf 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 (&reg_obstack);
- new_bb->il.rtl->global_live_at_end = ALLOC_REG_SET (&reg_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;
}