X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemain.c;h=0b772dfd468f632ca5da5b9c226a367adeb44f76;hb=9276447aec4972df060349e162f583c4898dfec8;hp=9d547146758a855230ac44a0d8fd714983f8de7a;hpb=c0acb5cc9a2967e31e2b2961a98831d674cea3b8;p=libfirm diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 9d5471467..0b772dfd4 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -1,8 +1,28 @@ +/* + * Copyright (C) 1995-2007 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. + */ + /** - * Backend driver. - * @author Sebastian Hack - * @date 25.11.2004 - * @cvsid $Id$ + * @file + * @brief Main Backend driver. + * @author Sebastian Hack + * @date 25.11.2004 + * @version $Id$ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -34,7 +54,7 @@ #include "cfopt.h" #include "execfreq.h" -#include "bearch.h" +#include "bearch_t.h" #include "be_t.h" #include "bemodule.h" #include "beutil.h" @@ -45,7 +65,6 @@ #include "belive_t.h" #include "bespillbelady.h" #include "bera.h" -#include "beraextern.h" #include "bechordal_t.h" #include "beifg.h" #include "beifg_impl.h" @@ -59,6 +78,7 @@ #include "beverify.h" #include "beprofile.h" #include "be_dbgout.h" +#include "beirg_t.h" #ifdef WITH_ILP #include "beilpsched.h" @@ -225,7 +245,6 @@ static be_main_env_t *be_init_env(be_main_env_t *env, FILE *file_handle) obstack_init(&env->obst); env->arch_env = obstack_alloc(&env->obst, sizeof(env->arch_env[0])); env->options = &be_options; - FIRM_DBG_REGISTER(env->dbg, "be.main"); arch_env_init(env->arch_env, isa_if, file_handle, env); @@ -282,7 +301,6 @@ static void initialize_birg(be_irg_t *birg, ir_graph *irg, be_main_env_t *env) edges_deactivate_kind(irg, EDGE_KIND_DEP); edges_activate_kind(irg, EDGE_KIND_DEP); - DBG((env->dbg, LEVEL_2, "====> IRG: %F\n", irg)); dump(DUMP_INITIAL, irg, "-begin", dump_ir_block_graph); be_stat_init_irg(env->arch_env, irg); @@ -350,7 +368,7 @@ static void be_main_loop(FILE *file_handle, const char *cup_name) char prof_filename[256]; static const char suffix[] = ".prof"; be_irg_t *birgs; - unsigned num_birgs; + int num_birgs; ir_graph **irg_list, **backend_irg_list; lc_timer_t *t_abi = NULL; @@ -514,11 +532,12 @@ static void be_main_loop(FILE *file_handle, const char *cup_name) /** * Create execution frequencies from profile data or estimate some */ - if (be_profile_has_data()) { + if (be_profile_has_data()) birg->exec_freq = be_create_execfreqs_from_profile(irg); - } else { + else birg->exec_freq = compute_execfreq(irg, 10); - } + + be_live_chk_compare(birg); /* let backend prepare scheduling */ BE_TIMER_PUSH(t_codegen); @@ -797,14 +816,14 @@ const char *be_retrieve_dbg_info(const dbg_info *dbg, unsigned *line) { return NULL; } -int be_put_ignore_regs(const be_irg_t *birg, const arch_register_class_t *cls, bitset_t *bs) +unsigned be_put_ignore_regs(const be_irg_t *birg, const arch_register_class_t *cls, bitset_t *bs) { - if(bs == NULL) + if (bs == NULL) bs = bitset_alloca(cls->n_regs); else bitset_clear_all(bs); - assert(bitset_size(bs) == (unsigned) cls->n_regs); + assert(bitset_size(bs) == (unsigned)cls->n_regs); arch_put_non_ignore_regs(birg->main_env->arch_env, cls, bs); bitset_flip_all(bs); be_abi_put_ignore_regs(birg->abi, cls, bs);