/* set the current graph (this is important for several firm functions) */
current_ir_graph = irg;
+ /* Normalize proj nodes. */
+ normalize_proj_nodes(irg);
+
/* we do this before critical edge split. As this produces less returns,
because sometimes (= 164.gzip) multiple returns are slower */
normalize_n_returns(irg);
/* reset the phi handler. */
be_phi_handler_reset(env.phi_handler);
-#ifdef FIRM_STATISTICS
- stat_ev_ctx_push_fobj("irg", irg);
-#endif
+ stat_ev_ctx_push_fobj("bemain_irg", irg);
/* stop and reset timers */
BE_TIMER_ONLY(
}
/* generate code */
+ stat_ev_ctx_push("bemain_phase", "prepare");
BE_TIMER_PUSH(t_codegen);
arch_code_generator_prepare_graph(birg->cg);
BE_TIMER_POP(t_codegen);
+ stat_ev_ctx_pop();
/* reset the phi handler. */
be_phi_handler_reset(env.phi_handler);
/* be_live_chk_compare(birg); */
/* let backend prepare scheduling */
+ stat_ev_ctx_push("bemain_phase", "before_sched");
BE_TIMER_PUSH(t_codegen);
arch_code_generator_before_sched(birg->cg);
BE_TIMER_POP(t_codegen);
+ stat_ev_ctx_pop();
/* schedule the irg */
BE_TIMER_PUSH(t_sched);
be_check_dominance(irg);
be_verify_out_edges(irg);
be_verify_schedule(birg);
- be_verify_register_allocation(env.arch_env, irg);
+ be_verify_register_allocation(birg);
} else if (be_options.vrfy_option == BE_VRFY_ASSERT) {
assert(irg_verify(irg, VRFY_ENFORCE_SSA) && "irg verification failed");
assert(be_verify_out_edges(irg) && "out edge verification failed");
assert(be_check_dominance(irg) && "Dominance verification failed");
assert(be_verify_schedule(birg) && "Schedule verification failed");
- assert(be_verify_register_allocation(env.arch_env, irg)
+ assert(be_verify_register_allocation(birg)
&& "register allocation verification failed");
}
const char *pos = dot ? dot : cup_name + strlen(cup_name);
char *buf = alloca(pos - cup_name + 1);
strncpy(buf, cup_name, pos - cup_name);
+ buf[pos - cup_name] = '\0';
stat_ev_begin(buf);
}