X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbechordal.c;h=9f17809417d7a4b212cce97515aaed8e45ed903f;hb=780d1704bdcc2332c68a5161cfaa0f15cee9c352;hp=25e7227fc87fa515de89cd3e34e41e07786e8dc6;hpb=10cfe14d793d33b930a6e1243dbeb17e6dc28b16;p=libfirm diff --git a/ir/be/bechordal.c b/ir/be/bechordal.c index 25e7227fc..9f1780941 100644 --- a/ir/be/bechordal.c +++ b/ir/be/bechordal.c @@ -139,10 +139,12 @@ static void pair_up_operands(const be_chordal_alloc_env_t *alloc_env, be_insn_t for (i = insn->use_start; i < insn->n_ops; ++i) { int n_total; const be_operand_t *op = &insn->ops[i]; + be_lv_t *lv; if (op->partner != NULL) continue; - if (be_values_interfere(env->birg->lv, op->irn, op->carrier)) + lv = be_get_irg_liveness(env->irg); + if (be_values_interfere(lv, op->irn, op->carrier)) continue; bitset_clear_all(bs); @@ -292,11 +294,12 @@ static ir_node *handle_constraints(be_chordal_alloc_env_t *alloc_env, foreach_out_edge(perm, edge) { int i; ir_node *proj = get_edge_src_irn(edge); + be_lv_t *lv = be_get_irg_liveness(env->irg); assert(is_Proj(proj)); - if (!be_values_interfere(env->birg->lv, proj, irn) - || pmap_contains(partners, proj)) + if (!be_values_interfere(lv, proj, irn) + || pmap_contains(partners, proj)) continue; /* don't insert a node twice */ @@ -332,6 +335,7 @@ static ir_node *handle_constraints(be_chordal_alloc_env_t *alloc_env, match_res = hungarian_solve(bp, assignment, &cost, 1); assert(match_res == 0 && "matching failed"); #else + /*bipartite_dump_f(stderr, bp);*/ bipartite_matching(bp, assignment); #endif @@ -340,7 +344,7 @@ static ir_node *handle_constraints(be_chordal_alloc_env_t *alloc_env, const arch_register_t *reg; ir_node *irn; - assert(assignment[i] >= 0 && "there must have been a register assigned"); + assert(assignment[i] >= 0 && "there must have been a register assigned (node not register pressure faithful?)"); reg = arch_register_for_index(env->cls, assignment[i]); assert(! (reg->type & arch_register_type_ignore)); @@ -434,7 +438,7 @@ static void assign(ir_node *block, void *env_ptr) bitset_t *colors = alloc_env->colors; bitset_t *in_colors = alloc_env->in_colors; struct list_head *head = get_block_border_head(env, block); - be_lv_t *lv = env->birg->lv; + be_lv_t *lv = be_get_irg_liveness(env->irg); const ir_node *irn; border_t *b; @@ -537,13 +541,12 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env) be_chordal_alloc_env_t env; char buf[256]; be_lv_t *lv; - be_irg_t *birg = chordal_env->birg; const arch_register_class_t *cls = chordal_env->cls; int colors_n = arch_register_class_n_regs(cls); ir_graph *irg = chordal_env->irg; - lv = be_assure_liveness(birg); + lv = be_assure_liveness(irg); be_liveness_assure_sets(lv); be_liveness_assure_chk(lv); @@ -562,8 +565,8 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env) dom_tree_walk_irg(irg, constraints, NULL, &env); if (chordal_env->opts->dump_flags & BE_CH_DUMP_CONSTR) { - snprintf(buf, sizeof(buf), "-%s-constr", chordal_env->cls->name); - be_dump(chordal_env->irg, buf, dump_ir_block_graph_sched); + snprintf(buf, sizeof(buf), "%s-constr", chordal_env->cls->name); + dump_ir_graph(chordal_env->irg, buf); } be_timer_pop(T_CONSTR);