Teach cparser how to parse (f)(void);, i.e. global declarations can start with a (.
[cparser] / driver / firm_opt.c
index a737409..eb75247 100644 (file)
@@ -19,6 +19,7 @@
 #include "firm_codegen.h"
 #include "firm_cmdline.h"
 #include "firm_timing.h"
+#include "ast2firm.h"
 
 #ifdef _WIN32
 #define snprintf _snprintf
@@ -309,6 +310,7 @@ static void do_optimize_funccalls(void)
 static void do_gcse(ir_graph *irg)
 {
        set_opt_global_cse(1);
+       optimize_graph_df(irg);
        place_code(irg);
        set_opt_global_cse(0);
 }
@@ -330,7 +332,7 @@ static void do_stred(ir_graph *irg)
 
 static void do_inline(void)
 {
-       inline_functions(500, 50);
+       inline_functions(firm_opt.inline_maxsize, firm_opt.inline_threshold);
 }
 
 static void do_cloning(void)
@@ -386,6 +388,7 @@ static opt_config_t opts[] = {
        { OPT_TARGET_IRG, "gvnpre",      (func_ptr_t) do_gvn_pre,              true, true,  true,  -1 },
        { OPT_TARGET_IRG, "ifconv",      (func_ptr_t) do_if_conv,              true, true,  true,  TV_IF_CONV },
        { OPT_TARGET_IRG, "bool",        (func_ptr_t) opt_bool,                true, true,  true,  -1 },
+       { OPT_TARGET_IRG, "shape-blocks",(func_ptr_t) shape_blocks,            true, true,  true,  TV_END_MELT },
        { OPT_TARGET_IRG, "stred",       (func_ptr_t) do_stred,                true, true,  true,  TV_OSR },
        { OPT_TARGET_IRG, "dead",        (func_ptr_t) dead_node_elimination,   true, false, true,  TV_DEAD_NODE },
        { OPT_TARGET_IRP, "inline",      (func_ptr_t) do_inline,               true, true,  true,  -1 },
@@ -478,6 +481,7 @@ static void do_firm_optimizations(const char *input_filename)
   set_opt_scalar_replacement(firm_opt.scalar_replace);
   set_opt_auto_create_sync(firm_opt.auto_sync);
   set_opt_alias_analysis(firm_opt.alias_analysis);
+  set_opt_combo(firm_opt.combo);
 
   aa_opt = aa_opt_no_opt;
   if (firm_opt.strict_alias)
@@ -503,6 +507,7 @@ static void do_firm_optimizations(const char *input_filename)
   set_opt_enabled("gvnpre", firm_opt.gvn_pre);
   set_opt_enabled("ifconv", firm_opt.if_conversion);
   set_opt_enabled("bool", firm_opt.bool_opt);
+  set_opt_enabled("shape-blocks", firm_opt.shape_blocks);
   set_opt_enabled("inline", firm_opt.do_inline);
   set_opt_enabled("clone", firm_opt.cloning);
   set_opt_enabled("combo", firm_opt.combo);
@@ -559,7 +564,6 @@ static void do_firm_optimizations(const char *input_filename)
     do_irg_opt(irg, "lower");
     do_irg_opt(irg, "deconv");
     do_irg_opt(irg, "condeval");
-    do_irg_opt(irg, "lower_switch");
     do_irg_opt(irg, "remove_confirms");
     do_irg_opt(irg, "gvnpre");
     do_irg_opt(irg, "place");
@@ -572,6 +576,8 @@ static void do_firm_optimizations(const char *input_filename)
     }
 
     do_irg_opt(irg, "bool");
+    do_irg_opt(irg, "shape-blocks");
+    do_irg_opt(irg, "lower_switch");
     do_irg_opt(irg, "stred");
     do_irg_opt(irg, "local");
     do_irg_opt(irg, "dead");
@@ -796,21 +802,14 @@ static void do_firm_lowering(const char *input_filename)
 {
   int i;
 
-  /* do class lowering and vtbl creation */
-//  lower_classes_to_struct("vtbl", "m");
-
-#if 0
-  timer_push(TV_LOWER);
-  lower_highlevel();
-  timer_pop();
-#endif
-
   if (firm_opt.lower_ll) {
     lwrdw_param_t init = {
       1,
       1,
-      mode_Ls, mode_Lu,
-      mode_Is, mode_Iu,
+      get_atomic_mode(ATOMIC_TYPE_LONGLONG),
+      get_atomic_mode(ATOMIC_TYPE_ULONGLONG),
+      get_atomic_mode(ATOMIC_TYPE_INT),
+      get_atomic_mode(ATOMIC_TYPE_UINT),
       def_create_intrinsic_fkt,
       NULL
     };