X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeverify.c;h=c7c6045b874622ce09d014b0993b3dc0f2800afe;hb=952e0be71291f6475cb4c86894e43dc531eb8980;hp=27913cd9f9e689879ffab44af87a080dbab42533;hpb=305bb46f67ca674d24cee399b9ee3b878eab1b9b;p=libfirm diff --git a/ir/be/beverify.c b/ir/be/beverify.c index 27913cd9f..c7c6045b8 100644 --- a/ir/be/beverify.c +++ b/ir/be/beverify.c @@ -762,9 +762,9 @@ static void check_register_constraints(ir_node *node) ir_node *pred = get_Phi_pred(node, i); const arch_register_t *pred_reg = arch_get_irn_register(arch_env, pred); - if (reg != pred_reg) { - ir_fprintf(stderr, "Verify warning: Register %s as input %d of %+F not allowed (register constraint) in block %+F(%s)\n", - reg->name, i, node, get_nodes_block(node), get_irg_dump_name(irg)); + if (reg != pred_reg && !arch_register_type_is(pred_reg, joker)) { + ir_fprintf(stderr, "Verify warning: Input %d of %+F in block %+F(%s) uses register %s instead of %s\n", + i, node, get_nodes_block(node), get_irg_dump_name(irg), pred_reg->name, reg->name); problem_found = 1; } } @@ -822,20 +822,18 @@ static void verify_block_register_allocation(ir_node *block, void *data) { nregclasses = arch_env_get_n_reg_class(arch_env); for (i = 0; i < nregclasses; ++i) { ir_node *node; - int i2; + int idx, i2, n_regs; regclass = arch_env_get_reg_class(arch_env, i); - int i; - assert(lv->nodes && "live sets must be computed"); - int n_regs = arch_register_class_n_regs(regclass); - registers = alloca(n_regs * sizeof(registers[0])); + n_regs = arch_register_class_n_regs(regclass); + registers = alloca(n_regs * sizeof(registers[0])); memset(registers, 0, n_regs * sizeof(registers[0])); - be_lv_foreach(lv, block, be_lv_state_end, i) { - ir_node *node = be_lv_get_irn(lv, block, i); + be_lv_foreach(lv, block, be_lv_state_end, idx) { + ir_node *node = be_lv_get_irn(lv, block, idx); value_used(node); } @@ -863,8 +861,8 @@ static void verify_block_register_allocation(ir_node *block, void *data) { } } - be_lv_foreach(lv, block, be_lv_state_in, i) { - ir_node *node = be_lv_get_irn(lv, block, i); + be_lv_foreach(lv, block, be_lv_state_in, idx) { + ir_node *node = be_lv_get_irn(lv, block, idx); value_def(node); }