X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbearch.c;h=c028c9ca6508efcfdddc3aadf86b3ba57abaa2fd;hb=a09efb2ccc91c6d720aa6aa8c5f7e3c562528b2a;hp=bbc89027700e81304d9e71f907c829b1f4a314e5;hpb=d2e13406f3f6dd6694b63b6f6662111b8eddab3d;p=libfirm diff --git a/ir/be/bearch.c b/ir/be/bearch.c index bbc890277..c028c9ca6 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) { @@ -185,7 +175,7 @@ const arch_register_class_t *arch_get_irn_reg_class(const ir_node *irn, int pos) static inline reg_out_info_t *get_out_info(const ir_node *node) { - int pos = 0; + size_t pos = 0; const backend_info_t *info; assert(get_irn_mode(node) != mode_T); @@ -195,7 +185,7 @@ static inline reg_out_info_t *get_out_info(const ir_node *node) } info = be_get_info(node); - assert(pos >= 0 && pos < ARR_LEN(info->out_infos)); + assert(pos < ARR_LEN(info->out_infos)); return &info->out_infos[pos]; } @@ -204,7 +194,7 @@ static inline reg_out_info_t *get_out_info_n(const ir_node *node, int pos) { const backend_info_t *info = be_get_info(node); assert(!is_Proj(node)); - assert(pos >= 0 && pos < ARR_LEN(info->out_infos)); + assert(pos >= 0 && pos < (int)ARR_LEN(info->out_infos)); return &info->out_infos[pos]; }