aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2003-10-11 13:53:39 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-10-11 13:53:39 +0000
commit2981fafefcc843ed133c328e4f0f0187d661f186 (patch)
tree1e2fae2e0119b871ed90d12f751e83b202e8ae81 /gcc
parent379f1861d3d143f28098ceb8a32a7ddcd81c936b (diff)
downloadgcc-2981fafefcc843ed133c328e4f0f0187d661f186.zip
gcc-2981fafefcc843ed133c328e4f0f0187d661f186.tar.gz
gcc-2981fafefcc843ed133c328e4f0f0187d661f186.tar.bz2
combine.c (apply_distributive_law): Enable "distributive" floating point optimizations with -funsafe-math-optimizations.
* combine.c (apply_distributive_law): Enable "distributive" floating point optimizations with -funsafe-math-optimizations. From-SVN: r72334
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/combine.c13
2 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f24744b..f5bec02 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-11 Roger Sayle <roger@eyesopen.com>
+
+ * combine.c (apply_distributive_law): Enable "distributive" floating
+ point optimizations with -funsafe-math-optimizations.
+
2003-10-11 Andrew Pinski <pinskia@physics.uc.edu>
* genmodes.c (emit_mode_mask) Change MASK to MODE_MASK.
diff --git a/gcc/combine.c b/gcc/combine.c
index 1ac2851..0a65bf2 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7791,14 +7791,14 @@ static rtx
apply_distributive_law (rtx x)
{
enum rtx_code code = GET_CODE (x);
+ enum rtx_code inner_code;
rtx lhs, rhs, other;
rtx tem;
- enum rtx_code inner_code;
- /* Distributivity is not true for floating point.
- It can change the value. So don't do it.
- -- rms and moshier@world.std.com. */
- if (FLOAT_MODE_P (GET_MODE (x)))
+ /* Distributivity is not true for floating point as it can change the
+ value. So we don't do it unless -funsafe-math-optimizations. */
+ if (FLOAT_MODE_P (GET_MODE (x))
+ && ! flag_unsafe_math_optimizations)
return x;
/* The outer operation can only be one of the following: */
@@ -7806,7 +7806,8 @@ apply_distributive_law (rtx x)
&& code != PLUS && code != MINUS)
return x;
- lhs = XEXP (x, 0), rhs = XEXP (x, 1);
+ lhs = XEXP (x, 0);
+ rhs = XEXP (x, 1);
/* If either operand is a primitive we can't do anything, so get out
fast. */