X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyoptmain.c;h=5fc48f47aa8a0a5e6fd2264cfe3ded3b850e9ca4;hb=3c751b006ff4ad049b3733a082efd2f30c8fdbca;hp=cafcf2534c37b94390e670cf65f71897fdf3b960;hpb=4e284f2fdb54ce9dad76e569d9594f7fec0a04c4;p=libfirm diff --git a/ir/be/becopyoptmain.c b/ir/be/becopyoptmain.c index cafcf2534..5fc48f47a 100644 --- a/ir/be/becopyoptmain.c +++ b/ir/be/becopyoptmain.c @@ -13,9 +13,11 @@ #endif #include + #include "pmap.h" #include "debug.h" #include "irouts.h" +#include "bearch.h" #include "becopyopt.h" #include "becopystat.h" #include "becopyoptmain.h" @@ -43,45 +45,45 @@ typedef struct color_saver { static void save_load(ir_node *irn, void *env) { color_save_t *saver = env; - if (saver->chordal_env->cls == arch_get_irn_reg_class(saver->arch_env, irn, arch_pos_make_out(0))) { + if (saver->chordal_env->cls == arch_get_irn_reg_class(saver->arch_env, irn, -1)) { if (saver->flag == 0) { /* save */ - const arch_register_t *reg = arch_get_irn_register(saver->arch_env, irn, 0); + const arch_register_t *reg = arch_get_irn_register(saver->arch_env, irn); pmap_insert(saver->saved_colors, irn, (void *) reg); } else { /*load */ arch_register_t *reg = pmap_get(saver->saved_colors, irn); - arch_set_irn_register(saver->arch_env, irn, 0, reg); + arch_set_irn_register(saver->arch_env, irn, reg); } } } static void save_colors(color_save_t *color_saver) { color_saver->flag = 0; - irg_walk_graph(color_saver->chordal_env->session_env->irg, save_load, NULL, color_saver); + irg_walk_graph(color_saver->chordal_env->irg, save_load, NULL, color_saver); } static void load_colors(color_save_t *color_saver) { color_saver->flag = 1; - irg_walk_graph(color_saver->chordal_env->session_env->irg, save_load, NULL, color_saver); + irg_walk_graph(color_saver->chordal_env->irg, save_load, NULL, color_saver); } void be_copy_opt(be_chordal_env_t *chordal_env) { copy_opt_t *co; int costs, costs_init=-1, costs_heur=-1, costs_ilp_5_sec=-1, costs_ilp_30_sec=-1, costs_ilp=-1; - int lower_bound; - int was_optimal = 0; - color_save_t saver; + int lower_bound = -1; + int was_optimal = 0; - saver.arch_env = chordal_env->session_env->main_env->arch_env; + color_save_t saver; + saver.arch_env = chordal_env->main_env->arch_env; saver.chordal_env = chordal_env; saver.saved_colors = pmap_create(); /* BETTER: You can remove this if you replace all * `grep get_irn_out *.c` by the irouts.h module.*/ - compute_outs(chordal_env->session_env->irg); + compute_irg_outs(chordal_env->irg); co = new_copy_opt(chordal_env, get_costs_loop_depth); DBG((dbg, LEVEL_1, "----> CO: %s\n", co->name)); - phi_class_compute(chordal_env->session_env->irg); + phi_class_compute(chordal_env->irg); #ifdef DO_STAT lower_bound = co_get_lower_bound(co); @@ -96,16 +98,16 @@ void be_copy_opt(be_chordal_env_t *chordal_env) { DBG((dbg, LEVEL_1, "Init costs: %3d\n", costs_init)); #endif - save_colors(&saver); +// save_colors(&saver); #ifdef DO_HEUR - { - lc_timer_t *timer = lc_timer_register("heur", NULL); - lc_timer_reset_and_start(timer); - co_heur_opt(co); - lc_timer_stop(timer); - copystat_add_heur_time(lc_timer_elapsed_msec(timer)); - } + { + lc_timer_t *timer = lc_timer_register("heur", NULL); + lc_timer_reset_and_start(timer); + co_heur_opt(co); + lc_timer_stop(timer); + copystat_add_heur_time(lc_timer_elapsed_msec(timer)); + } #ifdef DO_STAT costs = co_get_copy_costs(co); costs_heur = costs; @@ -126,7 +128,6 @@ void be_copy_opt(be_chordal_env_t *chordal_env) { #endif #endif - #ifdef DO_ILP_30_SEC if (!was_optimal) { load_colors(&saver); @@ -140,10 +141,9 @@ void be_copy_opt(be_chordal_env_t *chordal_env) { #endif #endif - #ifdef DO_ILP load_colors(&saver); - co_ilp_opt(co, 1000.0); + co_ilp_opt(co, 60.0); #ifdef DO_STAT costs = co_get_copy_costs(co); costs_ilp = costs; @@ -151,7 +151,6 @@ void be_copy_opt(be_chordal_env_t *chordal_env) { DBG((dbg, LEVEL_1, "Opt costs: %3d\n", costs_ilp)); #endif assert(lower_bound == -1 || costs_ilp == -1 || lower_bound <= costs_ilp); - assert(costs_ilp == -1 || costs_heur == -1 || costs_ilp <= costs_heur); #endif pmap_destroy(saver.saved_colors);