From 1a90f19861b54e47085c18f644260aab97239b32 Mon Sep 17 00:00:00 2001 From: Sebastian Hack Date: Tue, 11 Apr 2006 15:21:06 +0000 Subject: [PATCH] Changed interface --- ir/be/belistsched.c | 23 ++++++++++++++++++----- ir/be/belistsched.h | 5 ++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ir/be/belistsched.c b/ir/be/belistsched.c index 7972a1219..bffc8855a 100644 --- a/ir/be/belistsched.c +++ b/ir/be/belistsched.c @@ -33,6 +33,7 @@ #include "beutil.h" #include "belive_t.h" #include "belistsched.h" +#include "beschedmris.h" #include "bearch.h" #include "bestat.h" @@ -992,10 +993,22 @@ static const list_sched_selector_t reg_pressure_selector_struct = { const list_sched_selector_t *reg_pressure_selector = ®_pressure_selector_struct; /* List schedule a graph. */ -void list_sched(const arch_env_t *arch_env, ir_graph *irg) +void list_sched(const be_irg_t *birg, int disable_mris) { + const arch_env_t *arch_env = birg->main_env->arch_env; + ir_graph *irg = birg->irg; + + int num_nodes; sched_env_t env; - int num_nodes = get_irg_last_idx(irg); + mris_env_t *mris; + + /* Assure, that the out edges are computed */ + edges_assure(irg); + + if(!disable_mris) + mris = be_sched_mris_preprocess(birg); + + num_nodes = get_irg_last_idx(irg); memset(&env, 0, sizeof(env)); env.selector = arch_env->isa->impl->get_list_sched_selector(arch_env->isa); @@ -1008,14 +1021,14 @@ void list_sched(const arch_env_t *arch_env, ir_graph *irg) if (env.selector->init_graph) env.selector_env = env.selector->init_graph(env.selector, arch_env, irg); - /* Assure, that the out edges are computed */ - edges_assure(irg); - /* Schedule each single block. */ irg_block_walk_graph(irg, list_sched_block, NULL, &env); if (env.selector->finish_graph) env.selector->finish_graph(env.selector_env); + if(!disable_mris) + be_sched_mris_free(mris); + DEL_ARR_F(env.sched_info); } diff --git a/ir/be/belistsched.h b/ir/be/belistsched.h index 7ca734284..1ffccb49c 100644 --- a/ir/be/belistsched.h +++ b/ir/be/belistsched.h @@ -109,9 +109,8 @@ extern const list_sched_selector_t *reg_pressure_selector; * Each block in the graph gets a list head to its link field being the * head of the schedule. You can walk this list using the functions in * list.h. - * @param arch_env The architecture environment. - * @param irg The graph to schedule. + * @param birg The backend irg. */ -void list_sched(const arch_env_t *arch_env, ir_graph *irg); +void list_sched(const be_irg_t *birg, int disable_mris); #endif /* _FIRM_LIST_SCHED */ -- 2.20.1