X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelower.c;h=44a310b88f802c3c51109d61f4a2a706321bcae3;hb=952e0be71291f6475cb4c86894e43dc531eb8980;hp=587b517968f6cb32d7d993f15c1df024c45ae2fb;hpb=6dbd1ecaf71f44f9883c9d5ac88ed19713d6f757;p=libfirm diff --git a/ir/be/belower.c b/ir/be/belower.c index 587b51796..44a310b88 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.c @@ -38,6 +38,7 @@ #include "irgmod.h" #include "iredges_t.h" #include "irgwalk.h" +#include "array_t.h" #include "bearch_t.h" #include "belower.h" @@ -364,8 +365,6 @@ static void lower_perm_node(ir_node *irn, void *walk_env) { real_size = n - get_n_checked_pairs(pairs, n); - be_do_stat_perm(reg_class->name, reg_class->n_regs, irn, block, n, real_size); - /* check for cycles and chains */ while (get_n_checked_pairs(pairs, n) < n) { i = n_ops = 0; @@ -495,8 +494,6 @@ static void lower_perm_node(ir_node *irn, void *walk_env) { } } - be_do_stat_permcycle(reg_class->name, irn, block, cycle->type == PERM_CHAIN, cycle->n_elems, n_ops); - free((void *) cycle->elems); free(cycle); } @@ -620,7 +617,8 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different, */ static void assure_different_constraints(ir_node *irn, constraint_env_t *env) { const arch_register_req_t *req; - const arch_env_t *arch_env = be_get_birg_arch_env(env->birg); + const arch_env_t *arch_env = be_get_birg_arch_env(env->birg); + ir_node *skipped_irn = belower_skip_proj(irn); req = arch_get_register_req(arch_env, irn, -1); @@ -639,14 +637,14 @@ static void assure_different_constraints(ir_node *irn, constraint_env_t *env) { * We can safely ignore a should_be_same x must_be_different y * IFF both inputs are equal! */ - if (get_irn_n(irn, idx_other) == get_irn_n(irn, idx_same)) { + if (get_irn_n(skipped_irn, idx_other) == get_irn_n(skipped_irn, idx_same)) { return; } } } for (i = 0; 1U << i <= other; ++i) { if (other & (1U << i)) { - ir_node *different_from = get_irn_n(belower_skip_proj(irn), i); + ir_node *different_from = get_irn_n(skipped_irn, i); gen_assure_different_pattern(irn, different_from, env); } } @@ -800,8 +798,6 @@ void assure_constraints(be_irg_t *birg) { ir_node **nodes; FIRM_DBG_REGISTER(firm_dbg_module_t *mod, "firm.be.lower.constr"); - be_assure_dom_front(birg); - DEBUG_ONLY(cenv.dbg = mod;) cenv.birg = birg; cenv.op_set = new_pset(cmp_op_copy_assoc, 16); @@ -921,9 +917,9 @@ static int push_through_perm(ir_node *perm, void *data) sched_foreach_reverse_from (sched_prev(perm), irn) { for (i = get_irn_arity(irn) - 1; i >= 0; --i) { ir_node *op = get_irn_n(irn, i); - if (arch_irn_consider_in_reg_alloc(aenv, cls, op) - && !values_interfere(env->birg, op, one_proj)) { - frontier = sched_next(irn); + if (arch_irn_consider_in_reg_alloc(aenv, cls, op) && + !values_interfere(env->birg, op, one_proj)) { + frontier = irn; goto found_front; } }