X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=c476f88b4c8589f7593a4df2afa917476985504a;hb=4ed245f5007168dab7850942a7ee6b6b29a19817;hp=259f35bf3e32129d7982430ae7f5bd37204df003;hpb=08f9ccb62f9fc4250a0721a3ae38b6574ada8c1b;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 259f35bf3..c476f88b4 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -28,6 +28,7 @@ #include "iredges_t.h" #include "irloop_t.h" #include "irtools.h" +#include "irvrfy.h" #include "return.h" #include "firmstat.h" @@ -65,7 +66,7 @@ static be_options_t be_options = { DUMP_NONE, /* dump options */ BE_TIME_OFF, /* no timing */ - BE_SCHED_SELECT_HEUR, /* heuristic selector */ + BE_SCHED_SELECT_HEUR, /* mueller heuristic selector */ 0, /* disable mris */ "i44pc52.info.uni-karlsruhe.de", /* ilp server */ "cplex" /* ilp solver */ @@ -129,8 +130,10 @@ static const lc_opt_enum_int_items_t vrfy_items[] = { /* schedule selector options. */ static const lc_opt_enum_int_items_t sched_select_items[] = { - { "isa", BE_SCHED_SELECT_ISA }, - { "heur", BE_SCHED_SELECT_HEUR }, + { "isa", BE_SCHED_SELECT_ISA }, + { "muchnik", BE_SCHED_SELECT_MUCHNIK }, + { "heur", BE_SCHED_SELECT_HEUR }, + { "hmuchnik", BE_SCHED_SELECT_HMUCHNIK }, { NULL, 0 } }; @@ -162,7 +165,7 @@ static const lc_opt_table_entry_t be_main_options[] = { LC_OPT_ENT_ENUM_PTR ("vrfy", "verify the backend irg (off, warn, assert)", &vrfy_var), LC_OPT_ENT_BOOL ("time", "get backend timing statistics", &be_options.timing), LC_OPT_ENT_BOOL ("sched.mris", "enable mris schedule preparation", &be_options.mris), - LC_OPT_ENT_ENUM_PTR ("sched.select", "schedule node selector (heur, isa)",&sched_select_var), + LC_OPT_ENT_ENUM_PTR ("sched.select", "schedule node selector (isa, muchnik, heur, hmuchnik)",&sched_select_var), #ifdef WITH_ILP LC_OPT_ENT_STR ("ilp.server", "the ilp server name", be_options.ilp_server, sizeof(be_options.ilp_server)), @@ -558,8 +561,19 @@ static void be_main_loop(FILE *file_handle) /* check schedule and register allocation */ BE_TIMER_PUSH(t_verify); - be_sched_vrfy(birg.irg, vrfy_option); - be_verify_register_allocation(env.arch_env, birg.irg); + if (vrfy_option == BE_VRFY_WARN) { + //irg_verify(birg.irg, VRFY_ENFORCE_SSA); + be_check_dominance(birg.irg); + be_verify_schedule(birg.irg); + be_verify_register_allocation(env.arch_env, birg.irg); + } + else if (vrfy_option == BE_VRFY_ASSERT) { + //assert(irg_verify(birg.irg, VRFY_ENFORCE_SSA) && "irg verification failed"); + assert(be_check_dominance(birg.irg) && "Dominance verification failed"); + assert(be_verify_schedule(birg.irg) && "Schedule verification failed"); + assert(be_verify_register_allocation(env.arch_env, birg.irg) + && "register allocation verification failed"); + } BE_TIMER_POP(t_verify); /* emit assembler code */