/* Ensure, that the ir_edges are computed. */
edges_assure(irg);
- /* reset the phi handler. */
- be_phi_handler_reset(env->phi_handler);
-
set_irg_phase_state(irg, phase_backend);
dump(DUMP_INITIAL, irg, "-prepared", dump_ir_block_graph);
/* set the current graph (this is important for several firm functions) */
current_ir_graph = irg;
+ /* reset the phi handler. */
+ be_phi_handler_reset(env.phi_handler);
+
#ifdef FIRM_STATISTICS
stat_ev_ctx_push_fobj("irg", irg);
#endif
/* some transformations need to be done before abi introduce */
arch_code_generator_before_abi(birg->cg);
- /* reset the phi handler. */
- be_phi_handler_reset(env.phi_handler);
-
/* implement the ABI conventions. */
BE_TIMER_PUSH(t_abi);
birg->abi = be_abi_introduce(birg);
arch_code_generator_prepare_graph(birg->cg);
BE_TIMER_POP(t_codegen);
+ /* reset the phi handler. */
+ be_phi_handler_reset(env.phi_handler);
+
be_do_stat_nodes(irg, "03 Prepare");
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
void be_phi_handler_free(arch_irn_handler_t *handler)
{
- phi_handler_t *h = (void *) handler;
+ phi_handler_t *h = get_phi_handler_from_handler(handler);
pmap_destroy(h->phi_attrs);
+ h->phi_attrs = NULL;
free(handler);
}