fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like BIT_IOR_EXPR...
authorRoger Sayle <roger@eyesopen.com>
Fri, 26 Mar 2004 01:20:46 +0000 (01:20 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Fri, 26 Mar 2004 01:20:46 +0000 (01:20 +0000)
* fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like
BIT_IOR_EXPR; A^B is nonnegative when A and B are nonnegative.

* gcc.dg/compare8.c: Add an additional test for XOR.

From-SVN: r79979

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/compare8.c

index c06551f..c56fb86 100644 (file)
@@ -1,3 +1,8 @@
+2004-03-25  Roger Sayle  <roger@eyesopen.com>
+
+       * fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like
+       BIT_IOR_EXPR; A^B is nonnegative when A and B are nonnegative.
+
 2004-03-25  Richard Henderson  <rth@redhat.com>
 
        PR 11527
index e8c36f0..7fbbc8e 100644 (file)
@@ -8722,6 +8722,7 @@ tree_expr_nonnegative_p (tree t)
       return tree_expr_nonnegative_p (TREE_OPERAND (t, 1))
             || tree_expr_nonnegative_p (TREE_OPERAND (t, 0));
     case BIT_IOR_EXPR:
+    case BIT_XOR_EXPR:
       return tree_expr_nonnegative_p (TREE_OPERAND (t, 0))
             && tree_expr_nonnegative_p (TREE_OPERAND (t, 1));
 
index f16de2b..208a55f 100644 (file)
@@ -1,3 +1,7 @@
+2004-03-25  Roger Sayle  <roger@eyesopen.com>
+
+       * gcc.dg/compare8.c: Add an additional test for XOR.
+
 2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.dg/torture/builtin-ctype-1.c: New test.
index 6d04085..d723c45 100644 (file)
@@ -13,3 +13,9 @@ g(unsigned short a1, unsigned short a2, unsigned int b)
   return ((a1+a2)&5) > b ? 2 : 3;  /* { dg-bogus "signed and unsigned" } */
 }
 
+int
+h(unsigned short a1, unsigned short a2, unsigned int b)
+{
+  return ((a1+a2)^5) > b ? 2 : 3;  /* { dg-bogus "signed and unsigned" } */
+}
+