X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeverify.c;h=c9095534c035e926b582ebb7e30ded0a14721622;hb=b9d45e08e23bcf058fa8f2d9e18dd78e8cccd044;hp=3d5bd20b796678b1a75bd4931a6cb19cc85b8041;hpb=7f4af57e60af949ed7d96fcbea767677fd0e0846;p=libfirm diff --git a/ir/be/beverify.c b/ir/be/beverify.c index 3d5bd20b7..c9095534c 100644 --- a/ir/be/beverify.c +++ b/ir/be/beverify.c @@ -205,7 +205,7 @@ static int should_be_scheduled(ir_node *node) { if(get_irn_mode(node) == mode_M) { if(is_Proj(node)) return -1; - if(is_Phi(node) || is_Sync(node) || get_irn_opcode(node) == iro_Pin) + if(is_Phi(node) || is_Sync(node) || is_Pin(node)) return 0; } if(is_Proj(node) && get_irn_mode(node) == mode_X) @@ -600,7 +600,7 @@ static void check_register_allocation(be_verify_register_allocation_env_t *env, const arch_register_class_t *regclass, pset *nodes) { const arch_env_t *arch_env = env->arch_env; ir_node *node; - const arch_register_t *reg; + const arch_register_t *reg = NULL; int fail = 0; bitset_t *registers = bitset_alloca(arch_register_class_n_regs(regclass)); @@ -616,6 +616,11 @@ static void check_register_allocation(be_verify_register_allocation_env_t *env, env->problem_found = 1; continue; } + if(!arch_reg_is_allocatable(arch_env, node, -1, reg)) { + ir_fprintf(stderr, "Verify warning: Register %s assigned to %+F not allowed (register constraint) in block %+F(%s)\n", + reg->name, node, get_nodes_block(node), get_irg_dump_name(env->irg)); + env->problem_found = 1; + } if(bitset_is_set(registers, reg->index)) { pset_break(nodes); fail = 1;