Added support for SymConst(ofs_ent)
[libfirm] / ir / be / becopyopt.c
index 8d2c618..e2d165c 100644 (file)
@@ -90,11 +90,13 @@ static const lc_opt_enum_mask_items_t algo_items[] = {
        { NULL,     0 }
 };
 
+typedef int (*opt_funcptr)(void);
+
 static const lc_opt_enum_func_ptr_items_t cost_func_items[] = {
-       { "freq",   co_get_costs_exec_freq },
-       { "loop",   co_get_costs_loop_depth },
-       { "one",    co_get_costs_all_one },
-       { NULL,     0 }
+       { "freq",   (opt_funcptr) co_get_costs_exec_freq },
+       { "loop",   (opt_funcptr) co_get_costs_loop_depth },
+       { "one",    (opt_funcptr) co_get_costs_all_one },
+       { NULL,     NULL }
 };
 
 static lc_opt_enum_mask_var_t dump_var = {
@@ -110,7 +112,7 @@ static lc_opt_enum_mask_var_t algo_var = {
 };
 
 static lc_opt_enum_func_ptr_var_t cost_func_var = {
-       &cost_func, cost_func_items
+       (opt_funcptr*) &cost_func, cost_func_items
 };
 
 static const lc_opt_table_entry_t options[] = {
@@ -156,9 +158,8 @@ void co_register_options(lc_opt_entry_t *grp)
 
 DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
 
+
 void be_copy_opt_init(void) {
-       if(algo == CO_ALGO_HEUR3)
-               be_java_coal_start_jvm();
 }
 
 copy_opt_t *new_copy_opt(be_chordal_env_t *chordal_env, cost_fct_t get_costs)
@@ -1436,6 +1437,10 @@ void co_driver(be_chordal_env_t *cenv)
                be_stat_ev_ull("co_prepare_costs", stats.costs);
        }
 
+       /* start the JVM here so that it does not tamper the timing. */
+       if(algo == CO_ALGO_HEUR3)
+               be_java_coal_start_jvm();
+
        algo_func = algos[algo].algo;
 
 #ifdef WITH_LIBCORE
@@ -1460,16 +1465,16 @@ void co_driver(be_chordal_env_t *cenv)
        co_complete_stats(co, &after);
 
        if(do_stats) {
-               int optimizable_costs = after.max_costs - after.inevit_costs;
-               int evitable          = after.costs     - after.inevit_costs;
+               ulong64 optimizable_costs = after.max_costs - after.inevit_costs;
+               ulong64 evitable          = after.costs     - after.inevit_costs;
 
                ir_printf("%30F ", cenv->irg);
-               printf("%10s %10llu%10llu%10llu", cenv->cls->name, after.max_costs, before.costs, after.inevit_costs);
+               printf("%10s %10" ULL_FMT "%10" ULL_FMT "%10" ULL_FMT, cenv->cls->name, after.max_costs, before.costs, after.inevit_costs);
 
                if(optimizable_costs > 0)
-                       printf("%10llu %5.2f\n", after.costs, (evitable * 100.0) / optimizable_costs);
+                       printf("%10" ULL_FMT " %5.2f\n", after.costs, (evitable * 100.0) / optimizable_costs);
                else
-                       printf("%10llu %5s\n", after.costs, "-");
+                       printf("%10" ULL_FMT " %5s\n", after.costs, "-");
        }
 
        be_stat_ev_ull("co_after_costs", after.costs);