From: Michael Beck Date: Thu, 13 Sep 2007 17:03:32 +0000 (+0000) Subject: bugfix for x+~x X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=e7ed2daabcfdad1d5236a7e4403ac67e9c186027;p=libfirm bugfix for x+~x [r15793] --- diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index 3870ba9e0..c1a40dd14 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -2035,7 +2035,18 @@ static ir_node *transform_node_Add(ir_node *n) { DBG_OPT_ALGSIM0(oldn, n, FS_OPT_NOT_PLUS_1); return n; } - if (a == b) { + if (op == b) { + /* ~x + x = -1 */ + ir_node *blk = get_irn_n(n, -1); + n = new_r_Const(current_ir_graph, blk, mode, get_mode_minus_one(mode)); + DBG_OPT_ALGSIM0(oldn, n, FS_OPT_ADD_X_NOT_X); + return n; + } + } + if (is_Not(b)) { + ir_node *op = get_Not_op(b); + + if (op == a) { /* ~x + x = -1 */ ir_node *blk = get_irn_n(n, -1); n = new_r_Const(current_ir_graph, blk, mode, get_mode_minus_one(mode));