X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbechordal_main.c;h=05611be22f63c4a7806b47e9d88a1222bd121654;hb=f2e9c62bb64e082f4734c460e121cb75f09faf88;hp=3c1fac6641d1bccd028fa63f76b909e8a91284e2;hpb=3cde9f45de66500b6c54a8af07c2356c56048af9;p=libfirm diff --git a/ir/be/bechordal_main.c b/ir/be/bechordal_main.c index 3c1fac664..05611be22 100644 --- a/ir/be/bechordal_main.c +++ b/ir/be/bechordal_main.c @@ -144,7 +144,7 @@ static lc_opt_enum_int_var_t be_ch_vrfy_var = { static const lc_opt_table_entry_t be_chordal_options[] = { LC_OPT_ENT_ENUM_PTR ("perm", "perm lowering options", &lower_perm_var), LC_OPT_ENT_ENUM_MASK("dump", "select dump phases", &dump_var), - LC_OPT_ENT_ENUM_PTR ("vrfy", "verify options", &be_ch_vrfy_var), + LC_OPT_ENT_ENUM_PTR ("verify", "verify options", &be_ch_vrfy_var), LC_OPT_LAST }; @@ -207,7 +207,7 @@ static void memory_operand_walker(ir_node *irn, void *env) /** * Starts a walk for memory operands if supported by the backend. */ -static INLINE void check_for_memory_operands(ir_graph *irg) +static inline void check_for_memory_operands(ir_graph *irg) { irg_walk_graph(irg, NULL, memory_operand_walker, NULL); } @@ -270,9 +270,9 @@ static void post_spill(post_spill_env_t *pse, int iteration) { } BE_TIMER_POP(t_ra_spill_apply); - BE_TIMER_PUSH(t_verify); /* verify schedule and register pressure */ + BE_TIMER_PUSH(t_verify); if (chordal_env->opts->vrfy_option == BE_CH_VRFY_WARN) { be_verify_schedule(birg); be_verify_register_pressure(birg, pse->cls, irg); @@ -429,7 +429,7 @@ static void be_ra_chordal_main(be_irg_t *birg) /* the backend has its own spiller */ m = arch_env_get_n_reg_class(arch_env); - pse = alloca(m * sizeof(pse[0])); + pse = ALLOCAN(post_spill_env_t, m); for (j = 0; j < m; ++j) { memcpy(&pse[j].cenv, &chordal_env, sizeof(chordal_env)); @@ -448,7 +448,12 @@ static void be_ra_chordal_main(be_irg_t *birg) } BE_TIMER_PUSH(t_verify); - be_verify_register_allocation(birg); + if (chordal_env.opts->vrfy_option == BE_CH_VRFY_WARN) { + be_verify_register_allocation(birg); + } else if(chordal_env.opts->vrfy_option == BE_CH_VRFY_ASSERT) { + assert(be_verify_register_allocation(birg) + && "Register allocation invalid"); + } BE_TIMER_POP(t_verify); BE_TIMER_PUSH(t_ra_epilog);