X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=d6e5579a061707fa87bebec9577ecc31fba79fc8;hb=5474a1c188c9d59eea2c915515980cd9cbab58d8;hp=ddf438bb6540d9d6d4b9fae7c00d1039fde2b667;hpb=3e32262d83cf529f74aae833c7557557ab39782a;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index ddf438bb6..d6e5579a0 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -151,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) @@ -341,6 +350,7 @@ void firm_be_init(void) /* Finalize the Firm backend. */ void firm_be_finish(void) { + finish_isa(); be_quit_modules(); } @@ -419,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); @@ -720,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");