X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=d6e5579a061707fa87bebec9577ecc31fba79fc8;hb=5474a1c188c9d59eea2c915515980cd9cbab58d8;hp=45917af419d98f29a36ab17f924f717fb1709166;hpb=65261e15cb91c3726def43e5fc12360a85779de1;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 45917af41..d6e5579a0 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -49,6 +49,7 @@ #include "execfreq.h" #include "irprofile.h" #include "irpass_t.h" +#include "ircons.h" #include "bearch.h" #include "be_t.h" @@ -150,6 +151,15 @@ static void initialize_isa(void) if (isa_initialized) return; isa_if->init(); + isa_initialized = true; +} + +static void finish_isa(void) +{ + if (isa_initialized) { + isa_if->finish(); + isa_initialized = false; + } } void be_init_default_asm_constraint_flags(void) @@ -340,6 +350,7 @@ void firm_be_init(void) /* Finalize the Firm backend. */ void firm_be_finish(void) { + finish_isa(); be_quit_modules(); } @@ -418,6 +429,7 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env) birg->irg = irg; birg->main_env = env; obstack_init(&birg->obst); + birg->lv = be_liveness_new(irg); edges_deactivate_kind(irg, EDGE_KIND_DEP); edges_activate_kind(irg, EDGE_KIND_DEP); @@ -719,8 +731,8 @@ static void be_main_loop(FILE *file_handle, const char *cup_name) dump(DUMP_RA, irg, "ra"); be_timer_push(T_FINISH); - if (arch_env->impl->finish != NULL) - arch_env->impl->finish(irg); + if (arch_env->impl->finish_graph != NULL) + arch_env->impl->finish_graph(irg); be_timer_pop(T_FINISH); dump(DUMP_FINAL, irg, "finish");