aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorMostafa Hagog <mustafa@il.ibm.com>2005-04-03 09:27:07 +0000
committerMostafa Hagog <hagog@gcc.gnu.org>2005-04-03 09:27:07 +0000
commitf73d56667d8c9b6344e930bac2928a7cca46ab4c (patch)
tree8a2f7cc89d6073c3b6b3841a55aaa027e337866b /gcc/passes.c
parent1cb7dfc3b3c1506c0fc3cef33b8571f2eefd549c (diff)
downloadgcc-f73d56667d8c9b6344e930bac2928a7cca46ab4c.zip
gcc-f73d56667d8c9b6344e930bac2928a7cca46ab4c.tar.gz
gcc-f73d56667d8c9b6344e930bac2928a7cca46ab4c.tar.bz2
cfg.c (clear_bb_flags): Don't clear BB_DISABLE_SCHEDULE.
2005-03-31 Mostafa Hagog <mustafa@il.ibm.com> * cfg.c (clear_bb_flags): Don't clear BB_DISABLE_SCHEDULE. * modulo-sched.c (undo_replace_buff_elem): New structure. (kernel_number_of_cycles, ps_unschedule_node, undo_generate_reg_moves,free_undo_replace_buff, undo_permute_partial_schedule, loop_single_full_bb_p, SIMPLE_SMS_LOOP_P, loop_canon_p, canon_loop, build_loops_structure, get_sched_window): New. (generate_reg_moves): Return undo_replace_buff_elem and other fixes. (generate_prolog_epilog): Remove old loop versioning. (sms_schedule): Use loop information and loop_version. (sms_schedule_by_order): Split part of it to get_sched_window. * passes.c (rest_of_handle_sms): call cfg_layout_initialize cfg_layout_finalize and free_dominance_info before/after SMS. From-SVN: r97484
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index f98fbf8..40e87a4 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -577,6 +577,7 @@ rest_of_handle_partition_blocks (void)
static void
rest_of_handle_sms (void)
{
+ basic_block bb;
sbitmap blocks;
timevar_push (TV_SMS);
@@ -584,10 +585,11 @@ rest_of_handle_sms (void)
/* We want to be able to create new pseudos. */
no_new_pseudos = 0;
+ /* Collect loop information to be used in SMS. */
+ cfg_layout_initialize (CLEANUP_UPDATE_LIFE);
sms_schedule (dump_file);
close_dump_file (DFI_sms, print_rtl, get_insns ());
-
/* Update the life information, because we add pseudos. */
max_regno = max_reg_num ();
allocate_reg_info (max_regno, FALSE, FALSE);
@@ -601,6 +603,12 @@ rest_of_handle_sms (void)
no_new_pseudos = 1;
+ /* Finalize layout changes. */
+ FOR_EACH_BB (bb)
+ if (bb->next_bb != EXIT_BLOCK_PTR)
+ bb->rbi->next = bb->next_bb;
+ cfg_layout_finalize ();
+ free_dominance_info (CDI_DOMINATORS);
ggc_collect ();
timevar_pop (TV_SMS);
}