aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2003-06-10 13:00:17 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-06-10 13:00:17 +0000
commit8936c82f1ea5c9146ca32ac5c75ab166d242cf0d (patch)
tree987f545d4d639023d07bc9cd6e5221857cd77a19
parent5107c6e455a2fe4ecc15dd4d6808a2afdf70064a (diff)
downloadgcc-8936c82f1ea5c9146ca32ac5c75ab166d242cf0d.zip
gcc-8936c82f1ea5c9146ca32ac5c75ab166d242cf0d.tar.gz
gcc-8936c82f1ea5c9146ca32ac5c75ab166d242cf0d.tar.bz2
fold-const.c (fold <EQ_EXPR>): Don't fold x == x only if x is a floating point type *and* we currently honor NaNs.
* fold-const.c (fold <EQ_EXPR>): Don't fold x == x only if x is a floating point type *and* we currently honor NaNs. (fold <NE_EXPR>): Likewise. From-SVN: r67700
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/fold-const.c9
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3c34fe2..6ef9b93 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-06-10 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (fold <EQ_EXPR>): Don't fold x == x only if x
+ is a floating point type *and* we currently honor NaNs.
+ (fold <NE_EXPR>): Likewise.
+
2003-06-10 Mark Mitchell <mark@codesourcery.com>
PR c++/11131
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 1f118e8..7b0f2cc 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -7046,15 +7046,18 @@ fold (expr)
case EQ_EXPR:
case GE_EXPR:
case LE_EXPR:
- if (! FLOAT_TYPE_P (TREE_TYPE (arg0)))
+ if (! FLOAT_TYPE_P (TREE_TYPE (arg0))
+ || ! HONOR_NANS (TYPE_MODE (TREE_TYPE (arg0))))
return constant_boolean_node (1, type);
code = EQ_EXPR;
TREE_SET_CODE (t, code);
break;
case NE_EXPR:
- /* For NE, we can only do this simplification if integer. */
- if (FLOAT_TYPE_P (TREE_TYPE (arg0)))
+ /* For NE, we can only do this simplification if integer
+ or we don't honor IEEE floating point NaNs. */
+ if (FLOAT_TYPE_P (TREE_TYPE (arg0))
+ && HONOR_NANS (TYPE_MODE (TREE_TYPE (arg0))))
break;
/* ... fall through ... */
case GT_EXPR: