fold-const (fold_binary): Also optimize a/cbrt(b/c) into a*cbrt(c/b) if flag_unsafe_m...
authorUros Bizjak <ubizjak@gmail.com>
Tue, 12 Jun 2007 07:19:36 +0000 (09:19 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 12 Jun 2007 07:19:36 +0000 (09:19 +0200)
* fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.

testuite/ChangeLog:

* gcc.dg/builtins-11.c: Also check folding of a/cbrt(b/c).

From-SVN: r125641

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/builtins-11.c

index a381a86..a36f359 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
+
+       * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
+       into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
+
 2007-06-11  Diego Novillo  <dnovillo@google.com>
 
        * Makefile.in (reload1.o-warn): Remove.
index d2dd8cb..06b7c74 100644 (file)
@@ -10555,8 +10555,8 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
                }
            }
 
-         /* Optimize a/sqrt(b/c) into a*sqrt(c/b).  */
-         if (BUILTIN_SQRT_P (fcode1))
+         /* Optimize a/root(b/c) into a*root(c/b).  */
+         if (BUILTIN_ROOT_P (fcode1))
            {
              tree rootarg = CALL_EXPR_ARG (arg1, 0);
 
index 1e40136..73d6b96 100644 (file)
@@ -1,3 +1,7 @@
+2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
+
+       * gcc.dg/builtins-11.c: Also check folding of a/cbrt(b/c).
+
 2007-06-12  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/29786
index ba46892..ba0d2db 100644 (file)
@@ -12,6 +12,7 @@ extern void link_error(void);
 
 extern double exp(double);
 extern double sqrt(double);
+extern double cbrt(double);
 extern double pow(double,double);
 
 void test(double x, double y, double z)
@@ -39,6 +40,9 @@ void test(double x, double y, double z)
 
   if (x/sqrt(y/z) != x*sqrt(z/y))
     link_error ();
+
+  if (x/cbrt(y/z) != x*cbrt(z/y))
+    link_error ();
 }
 
 int main()