aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2004-03-26 01:20:46 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2004-03-26 01:20:46 +0000
commit22e63bd346c056fb94086e0797eda465fbe7a7ac (patch)
tree7510169a1bc588abe4ab5952f12329311706b5b7 /gcc
parent0066ef9ce4ea5377b154cdc10ef6626033ede8b8 (diff)
downloadgcc-22e63bd346c056fb94086e0797eda465fbe7a7ac.zip
gcc-22e63bd346c056fb94086e0797eda465fbe7a7ac.tar.gz
gcc-22e63bd346c056fb94086e0797eda465fbe7a7ac.tar.bz2
fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like BIT_IOR_EXPR...
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/fold-const.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/compare8.c6
4 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c06551f..c56fb86 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index e8c36f0..7fbbc8e 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -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));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f16de2b..208a55f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/gcc.dg/compare8.c b/gcc/testsuite/gcc.dg/compare8.c
index 6d04085..d723c45 100644
--- a/gcc/testsuite/gcc.dg/compare8.c
+++ b/gcc/testsuite/gcc.dg/compare8.c
@@ -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" } */
+}
+