aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>2007-06-12 16:28:01 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>2007-06-12 16:28:01 +0000
commit52a39a4c5db03b2e614f4bde1632e025348d1ebe (patch)
treeb55b0e708825d64adcda26d97ed19745dc046ede /gcc/fold-const.c
parent1c2abe5e5ca716e91b6c6befc9551c48c03a10ff (diff)
downloadgcc-52a39a4c5db03b2e614f4bde1632e025348d1ebe.zip
gcc-52a39a4c5db03b2e614f4bde1632e025348d1ebe.tar.gz
gcc-52a39a4c5db03b2e614f4bde1632e025348d1ebe.tar.bz2
fold-const.c (fold_binary): Guard (X-X) -> 0 transformation with !HONOR_NANS and !HONOR_INFINITIES.
* fold-const.c (fold_binary): Guard (X-X) -> 0 transformation with !HONOR_NANS and !HONOR_INFINITIES. * simplify-rtx.c (simplify_binary_operation_1): Likewise. From-SVN: r125652
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 06b7c74..814d033 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -9585,7 +9585,10 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
Also note that operand_equal_p is always false if an operand
is volatile. */
- if ((! FLOAT_TYPE_P (type) || flag_unsafe_math_optimizations)
+ if ((! FLOAT_TYPE_P (type)
+ || (flag_unsafe_math_optimizations
+ && !HONOR_NANS (TYPE_MODE (type))
+ && !HONOR_INFINITIES (TYPE_MODE (type))))
&& operand_equal_p (arg0, arg1, 0))
return fold_convert (type, integer_zero_node);