From: Matthias Braun Date: Thu, 24 Mar 2011 19:28:16 +0000 (+0100) Subject: fix and(cmp,cmp) optimisation rule, loosen verify to allow and/or/xor for reference... X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=5413681e89d04862a1b7d4837049a42c0ea4230b;p=libfirm fix and(cmp,cmp) optimisation rule, loosen verify to allow and/or/xor for reference modes --- diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index cfa7c3b5d..64b62b8ef 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -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); diff --git a/ir/ir/irverify.c b/ir/ir/irverify.c index 373d04140..5814d2d0e 100644 --- a/ir/ir/irverify.c +++ b/ir/ir/irverify.c @@ -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,