From: Christian Würdig Date: Wed, 24 Jan 2007 16:01:16 +0000 (+0000) Subject: if a node input has none as requirement, it is given the class of the argument node X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=b73faf4843bf2197d6e205e067f54f7863022b30;p=libfirm if a node input has none as requirement, it is given the class of the argument node --- diff --git a/ir/be/beinsn.c b/ir/be/beinsn.c index 3abefbbd0..c75033579 100644 --- a/ir/be/beinsn.c +++ b/ir/be/beinsn.c @@ -80,20 +80,24 @@ be_insn_t *be_scan_insn(const be_insn_env_t *env, ir_node *irn) insn->ops = obstack_finish(obst); /* Compute the admissible registers bitsets. */ - for(i = 0; i < insn->n_ops; ++i) { + for (i = 0; i < insn->n_ops; ++i) { be_operand_t *op = &insn->ops[i]; + if (op->req.cls == NULL && op->req.type == arch_register_req_type_none) { + op->req.cls = env->cls; + op->req.type = arch_register_req_type_normal; + } + assert(op->req.cls == env->cls); op->regs = bitset_obstack_alloc(obst, env->cls->n_regs); - if(arch_register_req_is(&op->req, limited)) + if (arch_register_req_is(&op->req, limited)) op->req.limited(op->req.limited_env, op->regs); else { arch_put_non_ignore_regs(arch_env, env->cls, op->regs); - if(env->ignore_colors) + if (env->ignore_colors) bitset_andnot(op->regs, env->ignore_colors); } - } return insn;