X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=driver%2Ffirm_opt.c;h=bacf110343b43865362f9f730cf6001e53adebb8;hb=b43672c3e931836e6a7e18b0bfb799ac4c419a56;hp=5d0c619943a4d22a959c98d24f2169c93dd77a6a;hpb=503bb0cd3230b1103f546276f4b944b4c394298b;p=cparser diff --git a/driver/firm_opt.c b/driver/firm_opt.c index 5d0c619..bacf110 100644 --- a/driver/firm_opt.c +++ b/driver/firm_opt.c @@ -146,7 +146,6 @@ static void rts_map(void) { { &rts_entities[rts_labs], i_mapper_abs }, { &rts_entities[rts_llabs], i_mapper_abs }, { &rts_entities[rts_imaxabs], i_mapper_abs }, - { &rts_entities[rts_alloca], i_mapper_alloca }, /* double -> double */ { &rts_entities[rts_fabs], i_mapper_abs }, @@ -391,7 +390,7 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi compute_doms(irg); CHECK_ONE(firm_opt.check_all, irg); - if (firm_opt.code_place) { + if (firm_opt.gcse) { timer_push(TV_CODE_PLACE); set_opt_global_cse(1); optimize_graph_df(irg); @@ -436,14 +435,6 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "cfopt"); CHECK_ONE(firm_opt.check_all, irg); - irg_verify(irg, VRFY_ENFORCE_SSA); - if (firm_opt.gvn_pre) { - do_gvn_pre(irg); - DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "pre"); - CHECK_ONE(firm_opt.check_all, irg); - irg_verify(irg, VRFY_ENFORCE_SSA); - } - if (firm_opt.load_store) { timer_push(TV_LOAD_STORE); optimize_load_store(irg); @@ -477,6 +468,22 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi timer_pop(); } + if (firm_opt.gvn_pre) { + do_gvn_pre(irg); + DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "pre"); + CHECK_ONE(firm_opt.check_all, irg); + irg_verify(irg, VRFY_ENFORCE_SSA); + } + + if (! firm_opt.gcse) { + timer_push(TV_CODE_PLACE); + optimize_graph_df(irg); + place_code(irg); + timer_pop(); + DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "place"); + CHECK_ONE(firm_opt.check_all, irg); + } + compute_doms(irg); compute_postdoms(irg); DUMP_ONE_CFG_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "dom"); @@ -865,17 +872,17 @@ static void do_firm_lowering(const char *input_filename) for (i = get_irp_n_irgs() - 1; i >= 0; --i) { current_ir_graph = get_irp_irg(i); - if (firm_opt.code_place) + if (firm_opt.gcse) set_opt_global_cse(1); timer_push(TV_LOCAL_OPT); optimize_graph_df(current_ir_graph); timer_pop(); DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, current_ir_graph, "lopt"); - if (! firm_opt.code_place) + if (! firm_opt.gcse) CHECK_ONE(firm_opt.check_all, current_ir_graph); - if (firm_opt.code_place) { + if (firm_opt.gcse) { timer_push(TV_CODE_PLACE); place_code(current_ir_graph); set_opt_global_cse(0);