]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
builtins.c (real_dconstp): Delete.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Fri, 27 Mar 2009 21:55:20 +0000 (21:55 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Fri, 27 Mar 2009 21:55:20 +0000 (21:55 +0000)
* builtins.c (real_dconstp): Delete.
(fold_builtin_logarithm): Remove inaccurate log(e) special case.

testsuite:
* gcc.dg/torture/builtin-explog-1.c: Remove tests that aren't true
for low precision (i.e. float).

From-SVN: r145130

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/builtin-explog-1.c

index d7a663561cd64c14488aa43a06f5f17245801513..3c58c26bd0a866626262946c1bf5817784af944b 100644 (file)
@@ -1,3 +1,8 @@
+2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * builtins.c (real_dconstp): Delete.
+       (fold_builtin_logarithm): Remove inaccurate log(e) special case.
+
 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
            Jakub Jelinek  <jakub@redhat.com>
 
index 83ce8eb8d68fa78bceb449ea6106e346466d017b..fab8a4c879db0d0842bf2a44053411bf5b98f817 100644 (file)
@@ -8331,21 +8331,6 @@ fold_builtin_bswap (tree fndecl, tree arg)
   return NULL_TREE;
 }
 
-/* Return true if EXPR is the real constant contained in VALUE.  */
-
-static bool
-real_dconstp (tree expr, const REAL_VALUE_TYPE *value)
-{
-  STRIP_NOPS (expr);
-
-  return ((TREE_CODE (expr) == REAL_CST
-          && !TREE_OVERFLOW (expr)
-          && REAL_VALUES_EQUAL (TREE_REAL_CST (expr), *value))
-         || (TREE_CODE (expr) == COMPLEX_CST
-             && real_dconstp (TREE_REALPART (expr), value)
-             && real_zerop (TREE_IMAGPART (expr))));
-}
-
 /* A subroutine of fold_builtin to fold the various logarithmic
    functions.  Return NULL_TREE if no simplification can me made.
    FUNC is the corresponding MPFR logarithm function.  */
@@ -8360,17 +8345,6 @@ fold_builtin_logarithm (tree fndecl, tree arg,
       tree res;
       const enum built_in_function fcode = builtin_mathfn_code (arg);
 
-      /* Optimize log(e) = 1.0.  We're never passed an exact 'e',
-        instead we'll look for 'e' truncated to MODE.  So only do
-        this if flag_unsafe_math_optimizations is set.  */
-      if (flag_unsafe_math_optimizations && func == mpfr_log)
-        {
-         const REAL_VALUE_TYPE e_truncated =
-           real_value_truncate (TYPE_MODE (type), dconst_e ());
-         if (real_dconstp (arg, &e_truncated))
-           return build_real (type, dconst1);
-       }
-
       /* Calculate the result when the argument is a constant.  */
       if ((res = do_mpfr_arg1 (arg, type, func, &dconst0, NULL, false)))
        return res;
index 6898d861167c797724d1abdb8267663c21505b4e..2f1903ab049a54d27f89714292677072eed56239 100644 (file)
@@ -1,3 +1,8 @@
+2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * gcc.dg/torture/builtin-explog-1.c: Remove tests that aren't true
+       for low precision (i.e. float).
+
 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
            Jakub Jelinek  <jakub@redhat.com>
 
index 4d7de84cbb5d4d9cec3a500618fd25ca726e66ba..740206153bd85c58ff8dadd38c6a9bf4f7be24f7 100644 (file)
@@ -53,7 +53,6 @@ void test(double d1, double d2, float f1, float f2,
  if (LOG(BASE) != 1.0 || LOG##f(BASE##F) != 1.0F || LOG##l(BASE##L) != 1.0L) \
     link_failure_##LOG##_N()
 
-  LOG_N(log, M_E);
   LOG_N(log2, 2.0);
   LOG_N(log10, 10.0);
 
@@ -74,7 +73,6 @@ void test(double d1, double d2, float f1, float f2,
  if (LOG(EXP(d1)) != d1*LOG(BASE) || LOG##f(EXP##f(f1)) != f1*LOG##f(BASE##F) \
   || LOG##l(EXP##l(ld1)) != ld1*LOG##l(BASE##L)) link_failure_##LOG##_##EXP()
 
-  LOGEXP(log,exp,M_E);
   LOGEXP(log,exp2,2.0);
   LOGEXP(log,exp10,10.0);
   LOGEXP(log,pow10,10.0);