X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=48a95ed0f76c906510bae81ffb5e180d4eb03d3a;hb=29087feac9466883c278e53eec325d5e3099df1d;hp=5a3b33f6042d43f359c8ac891ed1e0ab8141727e;hpb=2d83376719b1bd5fd45da73de41d0e3656bb52da;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 5a3b33f60..48a95ed0f 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -33,7 +33,7 @@ #include "obst.h" #include "bitset.h" - +#include "statev.h" #include "irprog.h" #include "irgopt.h" #include "irgraph.h" @@ -53,6 +53,7 @@ #include "bearch.h" #include "be_t.h" +#include "begnuas.h" #include "bemodule.h" #include "beutil.h" #include "benode.h" @@ -398,21 +399,19 @@ ir_type *be_get_type_long_double(void) * @param env an empty environment * @param file_handle the file handle where the output will be written to */ -static be_main_env_t *be_init_env(be_main_env_t *env, FILE *file_handle, - const char *compilation_unit_name) +static be_main_env_t *be_init_env(be_main_env_t *const env, char const *const compilation_unit_name) { memset(env, 0, sizeof(*env)); - env->file_handle = file_handle; env->ent_trampoline_map = pmap_create(); env->pic_trampolines_type = new_type_class(NEW_ID("$PIC_TRAMPOLINE_TYPE")); env->ent_pic_symbol_map = pmap_create(); env->pic_symbols_type = new_type_struct(NEW_ID("$PIC_SYMBOLS_TYPE")); env->cup_name = compilation_unit_name; + env->arch_env = isa_if->begin_codegeneration(); set_class_final(env->pic_trampolines_type, 1); memset(asm_constraint_flags, 0, sizeof(asm_constraint_flags)); - env->arch_env = arch_env_begin_codegeneration(isa_if, env); return env; } @@ -480,7 +479,6 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env) /* Ensure, that the ir_edges are computed. */ assure_edges(irg); - add_irg_constraints(irg, IR_GRAPH_CONSTRAINT_BACKEND); be_info_init_irg(irg); dump(DUMP_INITIAL, irg, "prepared"); @@ -504,7 +502,6 @@ static const char *get_timer_name(be_timer_id_t id) case T_LIVE: return "live"; case T_EXECFREQ: return "execfreq"; case T_SSA_CONSTR: return "ssa_constr"; - case T_RA_PROLOG: return "ra_prolog"; case T_RA_EPILOG: return "ra_epilog"; case T_RA_CONSTR: return "ra_constr"; case T_RA_SPILL: return "ra_spill"; @@ -566,7 +563,10 @@ static void be_main_loop(FILE *file_handle, const char *cup_name) } } - be_init_env(&env, file_handle, cup_name); + be_init_env(&env, cup_name); + + be_emit_init(file_handle); + be_gas_begin_compilation_unit(&env); arch_env = env.arch_env; @@ -820,6 +820,9 @@ static void be_main_loop(FILE *file_handle, const char *cup_name) stat_ev_ctx_pop("bemain_irg"); } + be_gas_end_compilation_unit(&env); + be_emit_exit(); + arch_env_end_codegeneration(arch_env); be_done_env(&env);