X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbechordal.c;h=24b7a2d5d26ce586ac17a6c2053628dad3a3ae43;hb=7ac90687a76ac7f73c98dca2881b641f2f77ed55;hp=9a7066d15e16107166853c20eb5352f59c70b9be;hpb=0fa5bccd8fbbb9b1bd57c363d7c21cc5190e4d26;p=libfirm diff --git a/ir/be/bechordal.c b/ir/be/bechordal.c index 9a7066d15..24b7a2d5d 100644 --- a/ir/be/bechordal.c +++ b/ir/be/bechordal.c @@ -258,7 +258,7 @@ static insn_t *scan_insn(be_chordal_env_t *env, ir_node *irn, struct obstack *ob for(i = 0, n = get_irn_arity(irn); i < n; ++i) { ir_node *op = get_irn_n(irn, i); - if(arch_irn_has_reg_class(arch_env, irn, i, env->cls)) { + if(arch_irn_consider_in_reg_alloc(arch_env, env->cls, op)) { arch_get_register_req(arch_env, &o.req, irn, i); o.carrier = op; o.irn = irn; @@ -455,13 +455,14 @@ static ir_node *pre_process_constraints(be_chordal_alloc_env_t *alloc_env, insn_ constraints. Succeeding phases (coalescing will need that). */ for(i = insn->use_start; i < insn->n_ops; ++i) { - ir_node *proj = insn->ops[i].carrier; + operand_t *op = &insn->ops[i]; + ir_node *proj = op->carrier; /* Note that the predecessor must not be a Proj of the Perm, since ignore-nodes are not Perm'ed. */ - if(is_Proj(proj) && get_Proj_pred(proj) == perm) { - be_set_constr_limited(perm, BE_OUT_POS(get_Proj_proj(proj)), &insn->ops[i].req); + if(op->has_constraints && is_Proj(proj) && get_Proj_pred(proj) == perm) { + be_set_constr_limited(perm, BE_OUT_POS(get_Proj_proj(proj)), &op->req); } } }