X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbecopyopt.c;h=f4e5f23e64d306f7f08cf516594b2a7f8bb013a0;hb=13749d0de8a924f85187fa804ac8c15fe3b35402;hp=e9e0e9cc9bb524c2041d4d221d97577fccd0de5f;hpb=e5bd2c37894dc003989f300e21cab5b74f37a997;p=libfirm diff --git a/ir/be/becopyopt.c b/ir/be/becopyopt.c index e9e0e9cc9..f4e5f23e6 100644 --- a/ir/be/becopyopt.c +++ b/ir/be/becopyopt.c @@ -43,8 +43,9 @@ #include "irloop_t.h" #include "iredges_t.h" #include "irbitset.h" -#include "irphase_t.h" #include "irprintf_t.h" +#include "irtools.h" +#include "util.h" #include "bemodule.h" #include "bearch.h" @@ -75,7 +76,7 @@ static unsigned dump_flags = 0; static unsigned style_flags = 0; -static unsigned do_stats = 0; +static int do_stats = 0; static cost_fct_t cost_func = co_get_costs_exec_freq; static int improve = 1; @@ -136,7 +137,7 @@ void be_register_copyopt(const char *name, co_algo_info *copyopt) be_add_module_to_list(©opts, name, copyopt); } -BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyopt); +BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyopt) void be_init_copyopt(void) { lc_opt_entry_t *be_grp = lc_opt_get_grp(firm_opt_get_root(), "be"); @@ -155,7 +156,7 @@ static int void_algo(copy_opt_t *co) return 0; } -BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copynone); +BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copynone) void be_init_copynone(void) { static co_algo_info copyheur = { @@ -235,7 +236,7 @@ static int co_is_optimizable_root(ir_node *irn) if (is_Reg_Phi(irn) || is_Perm_Proj(irn)) return 1; - req = arch_get_register_req_out(irn); + req = arch_get_irn_register_req(irn); if (is_2addr_code(req)) return 1; @@ -395,7 +396,7 @@ static void co_collect_units(ir_node *irn, void *env) if (get_irn_mode(irn) == mode_T) return; - req = arch_get_register_req_out(irn); + req = arch_get_irn_register_req(irn); if (req->cls != co->cls) return; if (!co_is_optimizable_root(irn)) @@ -422,7 +423,7 @@ static void co_collect_units(ir_node *irn, void *env) int o, arg_pos; ir_node *arg = get_irn_n(irn, i); - assert(arch_get_irn_reg_class_out(arg) == co->cls && "Argument not in same register class."); + assert(arch_get_irn_reg_class(arg) == co->cls && "Argument not in same register class."); if (arg == irn) continue; if (nodes_interfere(co->cenv, irn, arg)) { @@ -544,7 +545,7 @@ static int compare_ous(const void *k1, const void *k2) /* Units with constraints come first */ u1_has_constr = 0; for (i=0; inode_count; ++i) { - arch_get_register_req_out(&req, u1->nodes[i]); + arch_get_irn_register_req(&req, u1->nodes[i]); if (arch_register_req_is(&req, limited)) { u1_has_constr = 1; break; @@ -553,7 +554,7 @@ static int compare_ous(const void *k1, const void *k2) u2_has_constr = 0; for (i=0; inode_count; ++i) { - arch_get_register_req_out(&req, u2->nodes[i]); + arch_get_irn_register_req(&req, u2->nodes[i]); if (arch_register_req_is(&req, limited)) { u2_has_constr = 1; break; @@ -803,7 +804,7 @@ static void build_graph_walker(ir_node *irn, void *env) if (get_irn_mode(irn) == mode_T) return; - req = arch_get_register_req_out(irn); + req = arch_get_irn_register_req(irn); if (req->cls != co->cls || arch_irn_is_ignore(irn)) return; @@ -872,7 +873,7 @@ static int co_dump_appel_disjoint_constraints(const copy_opt_t *co, ir_node *a, constr[1] = bitset_alloca(co->cls->n_regs); for (j = 0; j < 2; ++j) { - const arch_register_req_t *req = arch_get_register_req_out(nodes[j]); + const arch_register_req_t *req = arch_get_irn_register_req(nodes[j]); if (arch_register_req_is(req, limited)) rbitset_copy_to_bitset(req->limited, constr[j]); else @@ -925,7 +926,7 @@ void co_dump_appel_graph(const copy_opt_t *co, FILE *f) if (!arch_irn_is_ignore(irn)) { int idx = node_map[get_irn_idx(irn)]; affinity_node_t *a = get_affinity_info(co, irn); - const arch_register_req_t *req = arch_get_register_req_out(irn); + const arch_register_req_t *req = arch_get_irn_register_req(irn); ir_node *adj; if (arch_register_req_is(req, limited)) { @@ -1030,7 +1031,7 @@ static void ifg_dump_node_attr(FILE *f, void *self, ir_node *irn) { co_ifg_dump_t *env = (co_ifg_dump_t*)self; const arch_register_t *reg = arch_get_irn_register(irn); - const arch_register_req_t *req = arch_get_register_req_out(irn); + const arch_register_req_t *req = arch_get_irn_register_req(irn); int limited = arch_register_req_is(req, limited); if (env->flags & CO_IFG_DUMP_LABELS) { @@ -1210,16 +1211,16 @@ void co_driver(be_chordal_env_t *cenv) co_complete_stats(co, &after); if (do_stats) { - ulong64 optimizable_costs = after.max_costs - after.inevit_costs; - ulong64 evitable = after.costs - after.inevit_costs; + unsigned long long optimizable_costs = after.max_costs - after.inevit_costs; + unsigned long long evitable = after.costs - after.inevit_costs; ir_printf("%30F ", cenv->irg); - printf("%10s %10" ULL_FMT "%10" ULL_FMT "%10" ULL_FMT, cenv->cls->name, after.max_costs, before.costs, after.inevit_costs); + printf("%10s %10llu%10llu%10llu", cenv->cls->name, after.max_costs, before.costs, after.inevit_costs); if (optimizable_costs > 0) - printf("%10" ULL_FMT " %5.2f\n", after.costs, (evitable * 100.0) / optimizable_costs); + printf("%10llu %5.2f\n", after.costs, (evitable * 100.0) / optimizable_costs); else - printf("%10" ULL_FMT " %5s\n", after.costs, "-"); + printf("%10llu %5s\n", after.costs, "-"); } /* Dump the interference graph in Appel's format. */