From: Christoph Mallon Date: Thu, 14 Aug 2008 09:37:18 +0000 (+0000) Subject: Local opt: -1 - x -> ~x. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=5f2e3f9708d6440955a8142566625bb54d08159d;p=libfirm Local opt: -1 - x -> ~x. [r21159] --- diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index 85c527014..03d03d401 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -2321,6 +2321,15 @@ static ir_node *transform_node_Sub(ir_node *n) { dbg_info *dbg = get_irn_dbg_info(n); return new_rd_Conv(dbg, current_ir_graph, get_nodes_block(n), a, mode); } + + if (mode == lmode && + get_mode_arithmetic(mode) == irma_twos_complement && + is_Const(a) && + get_Const_tarval(a) == get_mode_minus_one(mode)) { + /* -1 - x -> ~x */ + dbg_info *dbg = get_irn_dbg_info(n); + return new_rd_Not(dbg, current_ir_graph, get_nodes_block(n), b, mode); + } } restart: