mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-04 18:30:16 +08:00
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
This commit is contained in:
parent
1c2abe5e5c
commit
52a39a4c5d
@ -1,3 +1,9 @@
|
||||
2007-06-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
|
||||
with !HONOR_NANS and !HONOR_INFINITIES.
|
||||
* simplify-rtx.c (simplify_binary_operation_1): Likewise.
|
||||
|
||||
2007-06-12 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* gcov.c: Comments updated.
|
||||
|
@ -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);
|
||||
|
||||
|
@ -1772,10 +1772,14 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
|
||||
case MINUS:
|
||||
/* We can't assume x-x is 0 even with non-IEEE floating point,
|
||||
but since it is zero except in very strange circumstances, we
|
||||
will treat it as zero with -funsafe-math-optimizations. */
|
||||
will treat it as zero with -funsafe-math-optimizations and
|
||||
-ffinite-math-only. */
|
||||
if (rtx_equal_p (trueop0, trueop1)
|
||||
&& ! side_effects_p (op0)
|
||||
&& (! FLOAT_MODE_P (mode) || flag_unsafe_math_optimizations))
|
||||
&& (! FLOAT_MODE_P (mode)
|
||||
|| (flag_unsafe_math_optimizations
|
||||
&& !HONOR_NANS (mode)
|
||||
&& !HONOR_INFINITIES (mode))))
|
||||
return CONST0_RTX (mode);
|
||||
|
||||
/* Change subtraction from zero into negation. (0 - x) is the
|
||||
|
Loading…
Reference in New Issue
Block a user