X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=77a52f4a434065237166c4d2f5d126574fd14ad7;hb=ab11945ab757f3f22a717a35d639be264b0f649c;hp=5a3b33f6042d43f359c8ac891ed1e0ab8141727e;hpb=2d83376719b1bd5fd45da73de41d0e3656bb52da;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 5a3b33f60..77a52f4a4 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -1,20 +1,6 @@ /* - * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. - * * This file is part of libFirm. - * - * This file may be distributed and/or modified under the terms of the - * GNU General Public License version 2 as published by the Free Software - * Foundation and appearing in the file LICENSE.GPL included in the - * packaging of this file. - * - * Licensees holding valid libFirm Professional Edition licenses may use - * this file in accordance with the libFirm Commercial License. - * Agreement provided with the Software. - * - * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE - * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. + * Copyright (C) 2012 University of Karlsruhe. */ /** @@ -33,7 +19,7 @@ #include "obst.h" #include "bitset.h" - +#include "statev.h" #include "irprog.h" #include "irgopt.h" #include "irgraph.h" @@ -53,6 +39,7 @@ #include "bearch.h" #include "be_t.h" +#include "begnuas.h" #include "bemodule.h" #include "beutil.h" #include "benode.h" @@ -134,11 +121,11 @@ static const lc_opt_table_entry_t be_main_options[] = { 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), + LC_OPT_ENT_STR ("filtev", "filter for stat events (regex if support is active", &be_options.filtev), LC_OPT_ENT_BOOL ("verboseasm", "enable verbose assembler output", &be_options.verbose_asm), - 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_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 }; @@ -398,21 +385,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->pic_trampolines_type = new_type_segment(NEW_ID("$PIC_TRAMPOLINE_TYPE"), tf_none); env->ent_pic_symbol_map = pmap_create(); - env->pic_symbols_type = new_type_struct(NEW_ID("$PIC_SYMBOLS_TYPE")); + env->pic_symbols_type = new_type_segment(NEW_ID("$PIC_SYMBOLS_TYPE"), tf_none); 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 +465,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 +488,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 +549,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 +806,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);