2008-02-20 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Feb 2008 14:14:55 +0000 (14:14 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Feb 2008 14:14:55 +0000 (14:14 +0000)
* fold-const.c (split_tree): Associate floatig-point expressions
if flag_associative_math is set.

* gcc.dg/fold-reassoc-1.c: New testcase.
* gcc.dg/tree-ssa/recip-3.c: Adjust to not compute d/d.

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

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/fold-reassoc-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/recip-3.c

index 18dd9dc..91bd7e2 100644 (file)
@@ -1,5 +1,10 @@
 2008-02-20  Richard Guenther  <rguenther@suse.de>
 
+       * fold-const.c (split_tree): Associate floatig-point expressions
+       if flag_associative_math is set.
+
+2008-02-20  Richard Guenther  <rguenther@suse.de>
+
        * tree.h (fold_real_zero_addition_p): Declare.
        * fold-const.c (fold_real_zero_addition_p): Export.
        * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
index aba71b6..5d64c17 100644 (file)
@@ -1491,7 +1491,7 @@ split_tree (tree in, enum tree_code code, tree *conp, tree *litp,
       || TREE_CODE (in) == FIXED_CST)
     *litp = in;
   else if (TREE_CODE (in) == code
-          || (! FLOAT_TYPE_P (TREE_TYPE (in))
+          || ((! FLOAT_TYPE_P (TREE_TYPE (in)) || flag_associative_math)
               && ! SAT_FIXED_POINT_TYPE_P (TREE_TYPE (in))
               /* We can associate addition and subtraction together (even
                  though the C standard doesn't say so) for integers because
index 7e947ec..8b9fb37 100644 (file)
@@ -1,5 +1,10 @@
 2008-02-20  Richard Guenther  <rguenther@suse.de>
 
+       * gcc.dg/fold-reassoc-1.c: New testcase.
+       * gcc.dg/tree-ssa/recip-3.c: Adjust to not compute d/d.
+
+2008-02-20  Richard Guenther  <rguenther@suse.de>
+
        * gcc.dg/tree-ssa/reassoc-13.c: New testcase.
 
 2008-02-20  Ira Rosen  <irar@il.ibm.com>
diff --git a/gcc/testsuite/gcc.dg/fold-reassoc-1.c b/gcc/testsuite/gcc.dg/fold-reassoc-1.c
new file mode 100644 (file)
index 0000000..88d5dd8
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ffast-math -fdump-tree-original" } */
+
+double foo (double x)
+{
+  return (x + 0.5 - x - 0.5);
+}
+
+/* { dg-final { scan-tree-dump "return 0.0;" "original" } } */
+/* { dg-final { cleanup-tree-dump "original" } } */
index 45c8db1..04b40f3 100644 (file)
@@ -9,7 +9,7 @@ float h ()
        int i;
        double E, W, P, d;
 
-       W = 1.;
+       W = 1.1;
        d = 2.*e;
        E = 1. - d;