aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.0/gcc/combine.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.0/gcc/combine.c')
-rw-r--r--gcc-4.4.0/gcc/combine.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc-4.4.0/gcc/combine.c b/gcc-4.4.0/gcc/combine.c
index 70c1e5d3d..5bffb5845 100644
--- a/gcc-4.4.0/gcc/combine.c
+++ b/gcc-4.4.0/gcc/combine.c
@@ -8512,6 +8512,12 @@ distribute_and_simplify_rtx (rtx x, int n)
enum rtx_code outer_code, inner_code;
rtx decomposed, distributed, inner_op0, inner_op1, new_op0, new_op1, tmp;
+ /* 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 NULL_RTX;
+
decomposed = XEXP (x, n);
if (!ARITHMETIC_P (decomposed))
return NULL_RTX;