2001-05-04 Lars Brinkhoff <lars@nocrew.org>
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 May 2001 00:32:19 +0000 (00:32 +0000)
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 May 2001 00:32:19 +0000 (00:32 +0000)
* simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1
into -a.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41854 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/simplify-rtx.c

index 277e58f..bc4f951 100644 (file)
@@ -1,6 +1,12 @@
+2001-05-04  Lars Brinkhoff  <lars@nocrew.org>
+
+       * simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1
+       into -a.
+
 2000-05-04  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
 
-       * config/rs6000/rs6000.md (ashldi3 splits): Guard with TARGET_POWERPC64.
+       * config/rs6000/rs6000.md (ashldi3 splits): Guard with
+       TARGET_POWERPC64.
 
 2001-05-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
 
index 07fb24b..0468820 100644 (file)
@@ -945,6 +945,13 @@ simplify_binary_operation (code, mode, op0, op1)
          else if (GET_CODE (op1) == NEG)
            return simplify_gen_binary (MINUS, mode, op0, XEXP (op1, 0));
 
+         /* (~a) + 1 -> -a */
+         if (INTEGRAL_MODE_P (mode)
+             && GET_CODE (op0) == NOT
+             && GET_CODE (op1) == CONST_INT
+             && INTVAL (op1) == 1)
+           return gen_rtx_NEG (mode, XEXP (op0, 0));
+
          /* Handle both-operands-constant cases.  We can only add
             CONST_INTs to constants since the sum of relocatable symbols
             can't be handled by most assemblers.  Don't add CONST_INT