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
This commit is contained in:
Roger Sayle 2003-06-10 13:00:17 +00:00 committed by Roger Sayle
parent 5107c6e455
commit 8936c82f1e
2 changed files with 12 additions and 3 deletions

View File

@ -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

View File

@ -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: