X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=28f6c39606f071852beac9abec8cd4a8c1a4640b;hb=1db02a4692443f95545ede1cabff8c828e33442b;hp=af2cfe03ff2dc6989dbcff059b5a1c801a49cb35;hpb=8ccfe04ca59ff56fc32b2323b80cee2a5194694d;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index af2cfe03f..28f6c3960 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -87,7 +87,7 @@ static be_options_t be_options = { 0, /* create PIC code */ BE_VERIFY_WARN, /* verification level: warn */ "", /* ilp server */ - "cplex", /* ilp solver */ + "", /* ilp solver */ 0, /* enable statistic event dumping */ "", /* print stat events */ }; @@ -129,15 +129,15 @@ static const lc_opt_table_entry_t be_main_options[] = { LC_OPT_ENT_ENUM_MASK("dump", "dump irg on several occasions", &dump_var), LC_OPT_ENT_BOOL ("omitfp", "omit frame pointer", &be_options.omit_fp), LC_OPT_ENT_BOOL ("pic", "create PIC code", &be_options.pic), - LC_OPT_ENT_ENUM_PTR ("verify", "verify the backend irg", &verify_var), + LC_OPT_ENT_ENUM_INT ("verify", "verify the backend irg", &verify_var), LC_OPT_ENT_BOOL ("time", "get backend timing statistics", &be_options.timing), LC_OPT_ENT_BOOL ("profilegenerate", "instrument the code for execution count profiling", &be_options.opt_profile_generate), LC_OPT_ENT_BOOL ("profileuse", "use existing profile data", &be_options.opt_profile_use), LC_OPT_ENT_BOOL ("statev", "dump statistic events", &be_options.statev), - LC_OPT_ENT_STR ("filtev", "filter for stat events (regex if support is active", &be_options.filtev, sizeof(be_options.filtev)), + LC_OPT_ENT_STR ("filtev", "filter for stat events (regex if support is active", be_options.filtev), - LC_OPT_ENT_STR ("ilp.server", "the ilp server name", &be_options.ilp_server, sizeof(be_options.ilp_server)), - LC_OPT_ENT_STR ("ilp.solver", "the ilp solver name", &be_options.ilp_solver, sizeof(be_options.ilp_solver)), + LC_OPT_ENT_STR("ilp.server", "the ilp server name", be_options.ilp_server), + LC_OPT_ENT_STR("ilp.solver", "the ilp solver name", be_options.ilp_solver), LC_OPT_LAST }; @@ -420,6 +420,10 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env) /* Remove critical edges */ remove_critical_cf_edges_ex(irg, /*ignore_exception_edges=*/0); + /* For code generation all unreachable code and Bad nodes should be gone */ + remove_unreachable_code(irg); + remove_bads(irg); + /* Ensure, that the ir_edges are computed. */ edges_assure(irg); @@ -718,21 +722,6 @@ static void be_main_loop(FILE *file_handle, const char *cup_name) dump(DUMP_RA, irg, "ra"); - /* let the code generator prepare the graph for emitter */ - be_timer_push(T_FINISH); - if (arch_env->impl->after_ra != NULL) - arch_env->impl->after_ra(irg); - be_timer_pop(T_FINISH); - - /* fix stack offsets */ - be_timer_push(T_ABI); - be_abi_fix_stack_nodes(irg); - be_remove_dead_nodes_from_schedule(irg); - be_abi_fix_stack_bias(irg); - be_timer_pop(T_ABI); - - dump(DUMP_SCHED, irg, "fix_stack_after_ra"); - be_timer_push(T_FINISH); if (arch_env->impl->finish != NULL) arch_env->impl->finish(irg);