* combine.c (apply_distributive_law): Enable "distributive" floating
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 11 Oct 2003 13:53:39 +0000 (13:53 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 11 Oct 2003 13:53:39 +0000 (13:53 +0000)
point optimizations with -funsafe-math-optimizations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72334 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/combine.c

index f24744b..f5bec02 100644 (file)
@@ -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.
index 1ac2851..0a65bf2 100644 (file)
@@ -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.  */