diff options
author | Daniel Berlin <dberlin@gcc.gnu.org> | 2007-06-11 18:02:15 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2007-06-11 18:02:15 +0000 |
commit | 6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb (patch) | |
tree | fdb9e9f8a0700a2713dc690fed1a2cf20dae8392 /gcc/modulo-sched.c | |
parent | a91d32a4a65d54cccf639a1541417e39cb7b7deb (diff) | |
download | gcc-6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb.zip gcc-6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb.tar.gz gcc-6fb5fa3cbc0d78cf9f4ff7cac5e1d8af1e65c5bb.tar.bz2 |
Merge dataflow branch into mainline
From-SVN: r125624
Diffstat (limited to 'gcc/modulo-sched.c')
-rw-r--r-- | gcc/modulo-sched.c | 43 |
1 files changed, 14 insertions, 29 deletions
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index 3e14ff5..25cd53a 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -45,7 +45,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "expr.h" #include "params.h" #include "gcov-io.h" -#include "df.h" #include "ddg.h" #include "timevar.h" #include "tree-pass.h" @@ -260,9 +259,6 @@ static struct sched_info sms_sched_info = 0, 0, 0, NULL, NULL, NULL, NULL, NULL, -#ifdef ENABLE_CHECKING - NULL, -#endif 0 }; @@ -502,7 +498,7 @@ generate_reg_moves (partial_schedule_ptr ps) rtx reg_move = gen_move_insn (new_reg, prev_reg); sbitmap_iterator sbi; - add_insn_before (reg_move, last_reg_move); + add_insn_before (reg_move, last_reg_move, NULL); last_reg_move = reg_move; if (!SCHED_FIRST_REG_MOVE (u)) @@ -884,7 +880,6 @@ sms_schedule (void) int maxii; loop_iterator li; partial_schedule_ptr ps; - struct df *df; basic_block bb = NULL; struct loop *loop; basic_block condition_bb = NULL; @@ -913,17 +908,16 @@ sms_schedule (void) /* Initialize the scheduler. */ current_sched_info = &sms_sched_info; - sched_init (); /* Init Data Flow analysis, to be used in interloop dep calculation. */ - df = df_init (DF_HARD_REGS | DF_EQUIV_NOTES | DF_SUBREGS); - df_rd_add_problem (df, 0); - df_ru_add_problem (df, 0); - df_chain_add_problem (df, DF_DU_CHAIN | DF_UD_CHAIN); - df_analyze (df); - - if (dump_file) - df_dump (df, dump_file); + df_set_flags (DF_LR_RUN_DCE); + df_rd_add_problem (); + df_ru_add_problem (); + df_note_add_problem (); + df_chain_add_problem (DF_DU_CHAIN + DF_UD_CHAIN); + df_analyze (); + regstat_compute_calls_crossed (); + sched_init (); /* Allocate memory to hold the DDG array one entry for each loop. We use loop->num as index into this array. */ @@ -1016,7 +1010,7 @@ sms_schedule (void) continue; } - if (! (g = create_ddg (bb, df, 0))) + if (! (g = create_ddg (bb, 0))) { if (dump_file) fprintf (dump_file, "SMS doloop\n"); @@ -1026,10 +1020,6 @@ sms_schedule (void) g_arr[loop->num] = g; } - /* Release Data Flow analysis data structures. */ - df_finish (df); - df = NULL; - /* We don't want to perform SMS on new loops - created by versioning. */ FOR_EACH_LOOP (li, loop, 0) { @@ -1209,7 +1199,7 @@ sms_schedule (void) if (! flag_resched_modulo_sched) g->bb->flags |= BB_DISABLE_SCHEDULE; /* The life-info is not valid any more. */ - g->bb->flags |= BB_DIRTY; + df_set_bb_dirty (g->bb); reg_move_replaces = generate_reg_moves (ps); if (dump_file) @@ -1229,6 +1219,7 @@ sms_schedule (void) free_ddg (g); } + regstat_free_calls_crossed (); free (g_arr); /* Release scheduler data, needed until now because of DFA. */ @@ -2479,18 +2470,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); + cfg_layout_initialize (0); sms_schedule (); /* Update the life information, because we add pseudos. */ max_regno = max_reg_num (); - allocate_reg_info (max_regno, FALSE, FALSE); - update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES, - (PROP_DEATH_NOTES - | PROP_REG_INFO - | PROP_KILL_DEAD_CODE - | PROP_SCAN_DEAD_CODE)); - no_new_pseudos = 1; /* Finalize layout changes. */ @@ -2516,6 +2500,7 @@ struct tree_opt_pass pass_sms = 0, /* properties_provided */ 0, /* properties_destroyed */ TODO_dump_func, /* todo_flags_start */ + TODO_df_finish | TODO_dump_func | TODO_ggc_collect, /* todo_flags_finish */ 'm' /* letter */ |