#include "irloop_t.h"
#include "irtools.h"
#include "irvrfy.h"
+#include "irprintf.h"
#include "return.h"
#include "firmstat.h"
#include "cfopt.h"
ir_graph *irg = birg->irg;
optimization_state_t state;
const arch_code_generator_if_t *cg_if;
+ char irg_name[128];
/* set the current graph (this is important for several firm functions) */
current_ir_graph = irg;
- be_init_stat_file(be_options.stat_file_name, irg);
+ if(be_stat_ev_is_active()) {
+ ir_snprintf(irg_name, sizeof(irg_name), "%F", irg);
+ be_stat_tags[STAT_TAG_IRG] = irg_name;
+ be_stat_ev_push(be_stat_tags, STAT_TAG_LAST, be_stat_file);
+ }
/* stop and reset timers */
BE_TIMER_ONLY(
BE_TIMER_POP(t_other);
#define LC_EMIT(timer) \
- printf("%-20s: %.3lf msec\n", lc_timer_get_description(timer), (double)lc_timer_elapsed_usec(timer) / 1000.0); \
- be_stat_ev_l(lc_timer_get_name(timer), lc_timer_elapsed_msec(timer));
-
+ if(!be_stat_ev_is_active()) { \
+ printf("%-20s: %.3lf msec\n", lc_timer_get_description(timer), (double)lc_timer_elapsed_usec(timer) / 1000.0); \
+ } else { \
+ be_stat_ev_l(lc_timer_get_name(timer), lc_timer_elapsed_msec(timer)); \
+ }
#define LC_EMIT_RA(timer) \
- printf("\t%-20s: %.3lf msec\n", lc_timer_get_description(timer), (double)lc_timer_elapsed_usec(timer) / 1000.0); \
- be_stat_ev_l(lc_timer_get_name(timer), lc_timer_elapsed_msec(timer));
+ if(!be_stat_ev_is_active()) { \
+ printf("\t%-20s: %.3lf msec\n", lc_timer_get_description(timer), (double)lc_timer_elapsed_usec(timer) / 1000.0); \
+ } else { \
+ be_stat_ev_l(lc_timer_get_name(timer), lc_timer_elapsed_msec(timer)); \
+ }
BE_TIMER_ONLY(
- printf("==>> IRG %s <<==\n", get_entity_name(get_irg_entity(irg)));
- printf("# nodes at begin: %u\n", num_nodes_b);
- printf("# nodes before ra: %u\n", num_nodes_r);
- printf("# nodes at end: %u\n\n", num_nodes_a);
+ if(!be_stat_ev_is_active()) {
+ printf("==>> IRG %s <<==\n", get_entity_name(get_irg_entity(irg)));
+ printf("# nodes at begin: %u\n", num_nodes_b);
+ printf("# nodes before ra: %u\n", num_nodes_r);
+ printf("# nodes at end: %u\n\n", num_nodes_a);
+ }
LC_EMIT(t_abi);
LC_EMIT(t_codegen);
LC_EMIT(t_sched);
if (! stat_is_active())
free_ir_graph(irg);
- be_close_stat_file();
+ if(be_stat_ev_is_active()) {
+ be_stat_ev_pop();
+ }
}
be_profile_free();
be_done_env(&env);
lc_timer_reset_and_start(t);
}
+
+ be_init_stat_file(be_options.stat_file_name, cup_name);
#endif /* WITH_LIBCORE */
/* never build code for pseudo irgs */
set_visit_pseudo_irgs(0);
be_node_init();
+
be_main_loop(file_handle, cup_name);
#ifdef WITH_LIBCORE
if (be_options.timing == BE_TIME_ON) {
lc_timer_stop(t);
lc_timer_leave_high_priority();
- printf("%-20s: %lu msec\n", "BEMAINLOOP", lc_timer_elapsed_msec(t));
+ if(be_stat_ev_is_active()) {
+ be_stat_ev_l("backend_time", lc_timer_elapsed_msec(t));
+ } else {
+ printf("%-20s: %lu msec\n", "BEMAINLOOP", lc_timer_elapsed_msec(t));
+ }
}
+
+ be_close_stat_file();
#endif /* WITH_LIBCORE */
}