+ else if (! arch_register_type_is(reg, joker) && ! arch_reg_is_allocatable(arch_env, node, i, 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(env->irg));
+ env->problem_found = 1;
+ }
+ }
+}
+
+static void check_register_allocation(be_verify_register_allocation_env_t *env,
+ const arch_register_class_t *regclass,
+ ir_nodeset_t *nodes)
+{
+ const arch_env_t *arch_env = env->arch_env;
+ const arch_register_t *reg = NULL;
+ int fail = 0;
+ bitset_t *registers = bitset_alloca(arch_register_class_n_regs(regclass));
+ ir_node *node;
+ ir_nodeset_iterator_t iter;
+
+ foreach_ir_nodeset(nodes, node, iter) {
+ if (arch_get_irn_reg_class(arch_env, node, -1) != regclass)
+ continue;
+
+ reg = arch_get_irn_register(arch_env, node);
+
+ /* this problem is already reported in 'check_register_constraints' */
+ if (! reg)
+ continue;
+
+ if (bitset_is_set(registers, reg->index)) {