some more testcases I had lying around here
[cparser] / driver / firm_opt.c
index 5d0c619..bacf110 100644 (file)
@@ -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);