changed ir_printf call into DBG output
[libfirm] / ir / be / bechordal_main.c
index 4358b6d..7dc77be 100644 (file)
@@ -130,7 +130,8 @@ static be_ra_timer_t ra_timer = {
        NULL,
        NULL,
        NULL,
-
+       NULL,
+       NULL,
 };
 
 #ifdef WITH_LIBCORE
@@ -331,9 +332,11 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                ra_timer.t_live    = lc_timer_register("liveness", "be liveness");
                ra_timer.t_spill   = lc_timer_register("spill",    "spiller");
                ra_timer.t_color   = lc_timer_register("color",    "graph coloring");
-               ra_timer.t_ifg     = lc_timer_register("ifg",      "build interference graph");
+               ra_timer.t_ifg     = lc_timer_register("ifg",      "interference graph");
                ra_timer.t_copymin = lc_timer_register("copymin",  "copy minimization");
                ra_timer.t_ssa     = lc_timer_register("ssadestr", "ssa destruction");
+               ra_timer.t_verify  = lc_timer_register("verify",   "graph verification");
+               ra_timer.t_other   = lc_timer_register("other",    "other time");
 
                LC_STOP_AND_RESET_TIMER(ra_timer.t_prolog);
                LC_STOP_AND_RESET_TIMER(ra_timer.t_epilog);
@@ -343,12 +346,15 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                LC_STOP_AND_RESET_TIMER(ra_timer.t_ifg);
                LC_STOP_AND_RESET_TIMER(ra_timer.t_copymin);
                LC_STOP_AND_RESET_TIMER(ra_timer.t_ssa);
+               LC_STOP_AND_RESET_TIMER(ra_timer.t_verify);
+               LC_STOP_AND_RESET_TIMER(ra_timer.t_other);
        }
 
-#define BE_TIME_START(timer) if (main_opts->timing == BE_TIME_ON) lc_timer_start(timer)
-#define BE_TIME_STOP(timer)  if (main_opts->timing == BE_TIME_ON) lc_timer_stop(timer)
+#define BE_TIMER_PUSH(timer)  if (main_opts->timing == BE_TIME_ON) lc_timer_push(timer)
+#define BE_TIMER_POP()        if (main_opts->timing == BE_TIME_ON) lc_timer_pop()
 
-       BE_TIME_START(ra_timer.t_prolog);
+       BE_TIMER_PUSH(ra_timer.t_other);
+       BE_TIMER_PUSH(ra_timer.t_prolog);
 
        compute_doms(irg);
 
@@ -360,7 +366,7 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
 
        obstack_init(&chordal_env.obst);
 
-       BE_TIME_STOP(ra_timer.t_prolog);
+       BE_TIMER_POP();
 
        /* Perform the following for each register class. */
        for(j = 0, m = arch_isa_get_n_reg_class(isa); j < m; ++j) {
@@ -369,16 +375,18 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                chordal_env.border_heads  = pmap_create();
                chordal_env.ignore_colors = bitset_malloc(chordal_env.cls->n_regs);
 
-               BE_TIME_START(ra_timer.t_live);
+               BE_TIMER_PUSH(ra_timer.t_live);
 
                /* put all ignore registers into the ignore register set. */
                put_ignore_colors(&chordal_env);
 
                be_liveness(irg);
+
+               BE_TIMER_POP();
+
                dump(BE_CH_DUMP_LIVE, irg, chordal_env.cls, "-live", dump_ir_block_graph_sched);
 
-               BE_TIME_STOP(ra_timer.t_live);
-               BE_TIME_START(ra_timer.t_spill);
+               BE_TIMER_PUSH(ra_timer.t_spill);
 
                /* spilling */
                switch(options.spill_method) {
@@ -403,9 +411,14 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                        fprintf(stderr, "no valid spiller selected. falling back to belady\n");
                        be_spill_belady(&chordal_env);
                }
+
+               BE_TIMER_POP();
+
                dump(BE_CH_DUMP_SPILL, irg, chordal_env.cls, "-spill", dump_ir_block_graph_sched);
                be_abi_fix_stack_nodes(bi->abi);
 
+               BE_TIMER_PUSH(ra_timer.t_verify);
+
                /* verify schedule and register pressure */
                if (options.vrfy_option == BE_CH_VRFY_WARN) {
                        be_verify_schedule(irg);
@@ -417,18 +430,20 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                                && "Register pressure verification failed");
                }
 
-               BE_TIME_STOP(ra_timer.t_spill);
-               BE_TIME_START(ra_timer.t_live);
+               BE_TIMER_POP();
+               BE_TIMER_PUSH(ra_timer.t_live);
                be_liveness(irg);
-               BE_TIME_STOP(ra_timer.t_live);
+               BE_TIMER_POP();
+               BE_TIMER_PUSH(ra_timer.t_color);
 
                /* Color the graph. */
-               BE_TIME_START(ra_timer.t_color);
                be_ra_chordal_color(&chordal_env);
+
+               BE_TIMER_POP();
+
                dump(BE_CH_DUMP_CONSTR, irg, chordal_env.cls, "-color", dump_ir_block_graph_sched);
 
-               BE_TIME_STOP(ra_timer.t_color);
-               BE_TIME_START(ra_timer.t_ifg);
+               BE_TIMER_PUSH(ra_timer.t_ifg);
                //be_ifg_check_performance(&chordal_env);
 
                /* Create the ifg with the selected flavor */
@@ -471,13 +486,16 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                be_ifg_check_sorted_to_file(chordal_env.ifg, f);
                fclose(f);
 #endif
+               BE_TIMER_POP();
+
+               BE_TIMER_PUSH(ra_timer.t_verify);
+
                if (options.vrfy_option != BE_CH_VRFY_OFF)
                        be_ra_chordal_check(&chordal_env);
 
 //             be_ifg_check_sorted(chordal_env.ifg);
-
-               BE_TIME_STOP(ra_timer.t_ifg);
-               BE_TIME_START(ra_timer.t_copymin);
+               BE_TIMER_POP();
+               BE_TIMER_PUSH(ra_timer.t_copymin);
 
                /* copy minimization */
                co = NULL;
@@ -520,20 +538,31 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                        free_copy_opt(co);
                }
 
+               BE_TIMER_POP();
+
                dump(BE_CH_DUMP_COPYMIN, irg, chordal_env.cls, "-copymin", dump_ir_block_graph_sched);
+
+               BE_TIMER_PUSH(ra_timer.t_verify);
+
                if (options.vrfy_option != BE_CH_VRFY_OFF)
                        be_ra_chordal_check(&chordal_env);
 
-               BE_TIME_STOP(ra_timer.t_copymin);
-               BE_TIME_START(ra_timer.t_ssa);
+               BE_TIMER_POP();
+               BE_TIMER_PUSH(ra_timer.t_ssa);
 
                /* ssa destruction */
                be_ssa_destruction(&chordal_env);
+
+               BE_TIMER_POP();
+
                dump(BE_CH_DUMP_SSADESTR, irg, chordal_env.cls, "-ssadestr", dump_ir_block_graph_sched);
+
+               BE_TIMER_PUSH(ra_timer.t_verify);
                if (options.vrfy_option != BE_CH_VRFY_OFF) {
                        be_ssa_destruction_check(&chordal_env);
                        be_ra_chordal_check(&chordal_env);
                }
+               BE_TIMER_POP();
 
                if (options.copymin_method == BE_CH_COPYMIN_STAT)
                        copystat_dump(irg);
@@ -541,11 +570,9 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
                be_ifg_free(chordal_env.ifg);
                pmap_destroy(chordal_env.border_heads);
                bitset_free(chordal_env.ignore_colors);
-
-               BE_TIME_STOP(ra_timer.t_ssa);
        }
 
-       BE_TIME_START(ra_timer.t_epilog);
+       BE_TIMER_PUSH(ra_timer.t_epilog);
 
        be_compute_spill_offsets(&chordal_env);
 
@@ -557,12 +584,13 @@ static be_ra_timer_t *be_ra_chordal_main(const be_irg_t *bi)
        obstack_free(&chordal_env.obst, NULL);
        be_free_dominance_frontiers(chordal_env.dom_front);
 
-       BE_TIME_STOP(ra_timer.t_epilog);
+       BE_TIMER_POP();
+       BE_TIMER_POP();
 
-       if (main_opts->timing == BE_TIME_ON)
-               return &ra_timer;
-       else
-               return NULL;
+#undef BE_TIMER_PUSH
+#undef BE_TIMER_POP
+
+       return main_opts->timing == BE_TIME_ON ? &ra_timer : NULL;
 }
 
 const be_ra_t be_ra_chordal_allocator = {