diff options
author | Roger Sayle <roger@eyesopen.com> | 2003-06-10 13:00:17 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2003-06-10 13:00:17 +0000 |
commit | 8936c82f1ea5c9146ca32ac5c75ab166d242cf0d (patch) | |
tree | 987f545d4d639023d07bc9cd6e5221857cd77a19 | |
parent | 5107c6e455a2fe4ecc15dd4d6808a2afdf70064a (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fold-const.c | 9 |
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: |