diff options
author | Roger Sayle <roger@eyesopen.com> | 2003-10-11 13:53:39 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2003-10-11 13:53:39 +0000 |
commit | 2981fafefcc843ed133c328e4f0f0187d661f186 (patch) | |
tree | 1e2fae2e0119b871ed90d12f751e83b202e8ae81 /gcc/combine.c | |
parent | 379f1861d3d143f28098ceb8a32a7ddcd81c936b (diff) | |
download | gcc-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/combine.c')
-rw-r--r-- | gcc/combine.c | 13 |
1 files changed, 7 insertions, 6 deletions
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. */ |