aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/fold-const.c8
2 files changed, 8 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 959f77d..39d3f20 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-11 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (fold): Optimize any associative floating point
+ operator with -funsafe-math-optimizations, not just MULT_EXPR.
+
2003-08-11 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/lib1funcs.asm (__udivdi3): Add .type and .size
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 9333c59..9db9f2e 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -5803,13 +5803,11 @@ fold (tree expr)
associate:
/* In most languages, can't associate operations on floats through
parentheses. Rather than remember where the parentheses were, we
- don't associate floats at all. It shouldn't matter much. However,
- associating multiplications is only very slightly inaccurate, so do
- that if -funsafe-math-optimizations is specified. */
+ don't associate floats at all, unless the user has specified
+ -funsafe-math-optimizations. */
if (! wins
- && (! FLOAT_TYPE_P (type)
- || (flag_unsafe_math_optimizations && code == MULT_EXPR)))
+ && (! FLOAT_TYPE_P (type) || flag_unsafe_math_optimizations))
{
tree var0, con0, lit0, minus_lit0;
tree var1, con1, lit1, minus_lit1;