beverify: test register width in regalloc verification
[libfirm] / ir / be / belower.c
index dc93e6b..e564ce4 100644 (file)
@@ -455,7 +455,7 @@ static void lower_perm_node(ir_node *irn, lower_env_t *env)
                                        DB((dbg, LEVEL_1, "%+F creating copy node (%+F, %s) -> (%+F, %s)\n",
                                                                irn, arg1, cycle.elems[i]->name, res2, cycle.elems[i + 1]->name));
 
-                                       cpyxchg = be_new_Copy(reg_class, block, arg1);
+                                       cpyxchg = be_new_Copy(block, arg1);
                                        arch_set_irn_register(cpyxchg, cycle.elems[i + 1]);
 
                                        /* exchange copy node and proj */
@@ -516,7 +516,7 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
 
        op_set = &env->op_set;
        block  = get_nodes_block(irn);
-       cls    = arch_get_irn_reg_class_out(other_different);
+       cls    = arch_get_irn_reg_class(other_different);
 
        /* Make a not spillable copy of the different node   */
        /* this is needed because the different irn could be */
@@ -526,8 +526,8 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
        /* check if already exists such a copy in the schedule immediately before */
        cpy = find_copy(skip_Proj(irn), other_different);
        if (! cpy) {
-               cpy = be_new_Copy(cls, block, other_different);
-               arch_irn_set_flags(cpy, arch_irn_flags_dont_spill);
+               cpy = be_new_Copy(block, other_different);
+               arch_set_irn_flags(cpy, arch_irn_flags_dont_spill);
                DB((dbg_constr, LEVEL_1, "created non-spillable %+F for value %+F\n", cpy, other_different));
        } else {
                DB((dbg_constr, LEVEL_1, "using already existing %+F for value %+F\n", cpy, other_different));
@@ -536,7 +536,7 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
        /* Add the Keep resp. CopyKeep and reroute the users */
        /* of the other_different irn in case of CopyKeep.   */
        if (has_irn_users(other_different)) {
-               keep = be_new_CopyKeep_single(cls, block, cpy, irn, get_irn_mode(other_different));
+               keep = be_new_CopyKeep_single(block, cpy, irn);
                be_node_set_reg_class_in(keep, 1, cls);
        } else {
                ir_node *in[2];
@@ -582,7 +582,7 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
  */
 static void assure_different_constraints(ir_node *irn, ir_node *skipped_irn, constraint_env_t *env)
 {
-       const arch_register_req_t *req = arch_get_register_req_out(irn);
+       const arch_register_req_t *req = arch_get_irn_register_req(irn);
 
        if (arch_register_req_is(req, must_be_different)) {
                const unsigned other = req->other_different;
@@ -733,10 +733,10 @@ static void melt_copykeeps(constraint_env_t *cenv)
                                }
 
 #ifdef KEEP_ALIVE_COPYKEEP_HACK
-                               new_ck = be_new_CopyKeep(entry->cls, get_nodes_block(ref), be_get_CopyKeep_op(ref), n_melt, new_ck_in, mode_ANY);
+                               new_ck = be_new_CopyKeep(get_nodes_block(ref), be_get_CopyKeep_op(ref), n_melt, new_ck_in);
                                keep_alive(new_ck);
 #else
-                               new_ck = be_new_CopyKeep(entry->cls, get_nodes_block(ref), be_get_CopyKeep_op(ref), n_melt, new_ck_in, get_irn_mode(ref));
+                               new_ck = be_new_CopyKeep(get_nodes_block(ref), be_get_CopyKeep_op(ref), n_melt, new_ck_in);
 #endif /* KEEP_ALIVE_COPYKEEP_HACK */
 
                                /* set register class for all kept inputs */
@@ -867,7 +867,7 @@ static int push_through_perm(ir_node *perm)
        /* get some Proj and find out the register class of that Proj. */
        const ir_edge_t             *edge     = get_irn_out_edge_first_kind(perm, EDGE_KIND_NORMAL);
        ir_node                     *one_proj = get_edge_src_irn(edge);
-       const arch_register_class_t *cls      = arch_get_irn_reg_class_out(one_proj);
+       const arch_register_class_t *cls      = arch_get_irn_reg_class(one_proj);
        assert(is_Proj(one_proj));
 
        DB((dbg_permmove, LEVEL_1, "perm move %+F irg %+F\n", perm, irg));
@@ -900,7 +900,7 @@ found_front:
        while (!sched_is_begin(node)) {
                const arch_register_req_t *req;
                int                        input = -1;
-               ir_node                   *proj;
+               ir_node                   *proj  = NULL;
 
                /* search if node is a INPUT of Perm */
                foreach_out_edge(perm, edge) {
@@ -920,7 +920,7 @@ found_front:
                        break;
                if (arch_irn_is(node, modify_flags))
                        break;
-               req = arch_get_register_req_out(node);
+               req = arch_get_irn_register_req(node);
                if (req->type != arch_register_req_type_normal)
                        break;
                for (i = get_irn_arity(node) - 1; i >= 0; --i) {