X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbearch.c;h=06819e7c60326906528d512fea752d320969338a;hb=ce6161a7e42a48f7422b7babcc64d8ace18e2687;hp=89d351e1e80f3588604eb27f7abfac2ba2ac3ee3;hpb=ce972cd9312331b088fdf64d9c7fbfe004906c95;p=libfirm diff --git a/ir/be/bearch.c b/ir/be/bearch.c index 89d351e1e..06819e7c6 100644 --- a/ir/be/bearch.c +++ b/ir/be/bearch.c @@ -72,16 +72,16 @@ static inline const arch_irn_ops_t *get_irn_ops(const ir_node *irn) const arch_register_req_t *arch_get_register_req(const ir_node *irn, int pos) { if (is_Proj(irn)) { + ir_node *pred = get_Proj_pred(irn); + long pn = get_Proj_proj(irn); assert(pos == -1); - pos = -1-get_Proj_proj(irn); - irn = get_Proj_pred(irn); + return arch_get_out_register_req(pred, pn); } if (pos < 0) { return arch_get_out_register_req(irn, -pos-1); } else { - const arch_irn_ops_t *ops = get_irn_ops_simple(irn); - return ops->get_irn_reg_req_in(irn, pos); + return arch_get_in_register_req(irn, pos); } } @@ -147,16 +147,6 @@ int arch_get_op_estimated_cost(const ir_node *irn) } } -void arch_put_non_ignore_regs(const arch_register_class_t *cls, bitset_t *bs) -{ - unsigned i; - - for (i = 0; i < cls->n_regs; ++i) { - if (!arch_register_type_is(&cls->regs[i], ignore)) - bitset_set(bs, i); - } -} - int arch_reg_is_allocatable(const ir_node *irn, int pos, const arch_register_t *reg) { @@ -304,6 +294,12 @@ void arch_dump_register_req(FILE *F, const arch_register_req_t *req, } } + if (req->width != 1) { + fprintf(F, " width:%u", req->width); + } + if (arch_register_req_is(req, aligned)) { + fprintf(F, " aligned"); + } if (arch_register_req_is(req, ignore)) { fprintf(F, " ignore"); } @@ -361,6 +357,7 @@ static const arch_register_req_t no_requirement = { NULL, NULL, 0, + 0, 0 }; const arch_register_req_t *arch_no_register_req = &no_requirement;