fix and(cmp,cmp) optimisation rule, loosen verify to allow and/or/xor for reference...
authorMatthias Braun <matze@braunis.de>
Thu, 24 Mar 2011 19:28:16 +0000 (20:28 +0100)
committerMatthias Braun <matze@braunis.de>
Thu, 24 Mar 2011 19:29:17 +0000 (20:29 +0100)
ir/ir/iropt.c
ir/ir/irverify.c

index cfa7c3b..64b62b8 100644 (file)
@@ -3176,7 +3176,7 @@ static ir_node *transform_node_And(ir_node *n)
                        if (get_irn_mode(n_b_left) != mode) {
                                n_b_left = new_rd_Conv(dbgi, block, b_left, mode);
                        }
-                       ir_node     *or       = new_rd_Or(dbgi, block, a_left, b_left, mode);
+                       ir_node     *or       = new_rd_Or(dbgi, block, a_left, n_b_left, mode);
                        ir_graph    *irg      = get_irn_irg(n);
                        ir_node     *zero     = create_zero_const(irg, mode);
                        return new_rd_Cmp(dbgi, block, or, zero, relation);
index 373d041..5814d2d 100644 (file)
@@ -1276,7 +1276,7 @@ static int verify_node_Logic(ir_node *n, ir_graph *irg)
 
        ASSERT_AND_RET_DBG(
                /* And or Or or Eor: BB x int x int --> int */
-               (mode_is_int(mymode) || mymode == mode_b) &&
+               (mode_is_int(mymode) || mode_is_reference(mymode) || mymode == mode_b) &&
                op2mode == op1mode &&
                mymode == op2mode,
                "And, Or or Eor node", 0,