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;
}
}
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);
}
}
}
- 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);
}