#include "expr.h"
#include "params.h"
#include "gcov-io.h"
-#include "df.h"
#include "ddg.h"
#include "timevar.h"
#include "tree-pass.h"
0, 0, 0,
NULL, NULL, NULL, NULL, NULL,
-#ifdef ENABLE_CHECKING
- NULL,
-#endif
0
};
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))
int maxii;
loop_iterator li;
partial_schedule_ptr ps;
- struct df *df;
basic_block bb = NULL;
struct loop *loop;
basic_block condition_bb = NULL;
/* 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. */
continue;
}
- if (! (g = create_ddg (bb, df, 0)))
+ if (! (g = create_ddg (bb, 0)))
{
if (dump_file)
fprintf (dump_file, "SMS doloop\n");
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)
{
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)
free_ddg (g);
}
+ regstat_free_calls_crossed ();
free (g_arr);
/* Release scheduler data, needed until now because of DFA. */
/* 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. */
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 */