Bump minimum MPFR version to 3.1.0
authorJanne Blomqvist <jb@gcc.gnu.org>
Mon, 11 Nov 2019 15:59:48 +0000 (17:59 +0200)
committerJanne Blomqvist <jb@gcc.gnu.org>
Mon, 11 Nov 2019 15:59:48 +0000 (17:59 +0200)
Bump the minimum MPFR version to 3.1.0, released 2011-10-03. With this
requirement one can still build GCC with the operating system provided
MPFR on old but still supported operating systems like SLES 12 (MPFR
3.1.2) or RHEL/CentOS 7.x (MPFR 3.1.1).

This allows removing some code in the Fortran frontend, as well as
fixing PR 91828.

ChangeLog:

2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/91828
* configure.ac: Bump minimum MPFR to 3.1.0, recommended to 3.1.6+.
* configure: Regenerated.

gcc/ChangeLog:

2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/91828
* doc/install.texi: Document that the minimum MPFR version is
3.1.0.

gcc/fortran/ChangeLog:

2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/91828
* simplify.c (gfc_simplify_fraction): Remove fallback path for
MPFR < 3.1.0.

From-SVN: r278058

ChangeLog
configure
configure.ac
gcc/ChangeLog
gcc/doc/install.texi
gcc/fortran/ChangeLog
gcc/fortran/simplify.c

index 9ddc703260986eec2e526ed9731bc0f55b93130c..1d67b867f19d01fd80d167e4db7d2a3c1a9abf88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>
+
+        PR fortran/91828
+        * configure.ac: Bump minimum MPFR to 3.1.0, recommended to 3.1.6+.
+        * configure: Regenerated.
+
 2019-10-21  Jason Merrill  <jason@redhat.com>
 
        * .gitattributes: Also check ChangeLog whitespace.
index aec9186b2b0123d3088b69eb1ee541567654953e..ce146591655ddbaf478447e7e0091db816a3c91a 100755 (executable)
--- a/configure
+++ b/configure
@@ -5755,7 +5755,7 @@ int
 main ()
 {
 
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)
     choke me
     #endif
 
@@ -5772,7 +5772,7 @@ int
 main ()
 {
 
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,2)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,6)
     choke me
     #endif
 
@@ -5898,7 +5898,7 @@ rm -f core conftest.err conftest.$ac_objext \
 # The library versions listed in the error message below should match
 # the HARD-minimums enforced above.
   if test x$have_gmp != xyes; then
-    as_fn_error $? "Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
+    as_fn_error $? "Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
 Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
 their locations.  Source code for these libraries can be found at
 their respective hosting sites as well as at
index b8ce2ad20b9d03e42731252a9ec2a8417c13e566..d63a8bae940495588ef3ba5a7fd71cbba482bf7d 100644 (file)
@@ -1601,12 +1601,12 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
     AC_MSG_CHECKING([for the correct version of mpfr.h])
     AC_TRY_COMPILE([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)
     choke me
     #endif
     ], [AC_TRY_COMPILE([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,2)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,6)
     choke me
     #endif
     ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])])],
@@ -1661,7 +1661,7 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
 # The library versions listed in the error message below should match
 # the HARD-minimums enforced above.
   if test x$have_gmp != xyes; then
-    AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
+    AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
 Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
 their locations.  Source code for these libraries can be found at
 their respective hosting sites as well as at
index 0148accee6286607655abdc2e79d4e87f3199315..9bb851367258e23a5d89ed1edbb1b90d587665b3 100644 (file)
@@ -1,3 +1,9 @@
+2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>
+
+        PR fortran/91828
+        * doc/install.texi: Document that the minimum MPFR version is
+        3.1.0.
+
 2019-11-11  Claudiu Zissulescu <claziss@gmail.com>
 
        * config/arc/arc.md (movsi_ne): Reorder instruction variants and
index 2cb8a342a2c3b41c264fa86ac4273a71b8b609ca..93b01ff7971dfcaa9c58a06b1108a2ece019f653 100644 (file)
@@ -384,7 +384,7 @@ and @option{--with-gmp-include}.
 The in-tree build is only supported with the GMP version that
 download_prerequisites installs.
 
-@item MPFR Library version 2.4.2 (or later)
+@item MPFR Library version 3.1.0 (or later)
 
 Necessary to build GCC@.  It can be downloaded from
 @uref{https://www.mpfr.org}.  If an MPFR source distribution is found
index 0a8efedb6e63ba513c89272dd561c4549792f3a4..0f14ad1277cf46ea9c87b05fa6979276e0f7b13d 100644 (file)
@@ -1,3 +1,9 @@
+2019-11-11  Janne Blomqvist  <jb@gcc.gnu.org>
+
+        PR fortran/91828
+        * simplify.c (gfc_simplify_fraction): Remove fallback path for
+        MPFR < 3.1.0.
+
 2019-11-11  Tobias Burnus  <tobias@codesourcery.com>
            Kwok Cheung Yeung  <kcy@codesourcery.com>
 
index 2eb1943c3eecb396b5896b24565103811a8e6721..0461d31cd8866b770fb13b86f540fdb49b07f5ba 100644 (file)
@@ -3076,12 +3076,7 @@ gfc_expr *
 gfc_simplify_fraction (gfc_expr *x)
 {
   gfc_expr *result;
-
-#if MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)
-  mpfr_t absv, exp, pow2;
-#else
   mpfr_exp_t e;
-#endif
 
   if (x->expr_type != EXPR_CONSTANT)
     return NULL;
@@ -3095,41 +3090,9 @@ gfc_simplify_fraction (gfc_expr *x)
       return result;
     }
 
-#if MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)
-
-  /* MPFR versions before 3.1.0 do not include mpfr_frexp.
-     TODO: remove the kludge when MPFR 3.1.0 or newer will be required */
-
-  if (mpfr_sgn (x->value.real) == 0)
-    {
-      mpfr_set (result->value.real, x->value.real, GFC_RND_MODE);
-      return result;
-    }
-
-  gfc_set_model_kind (x->ts.kind);
-  mpfr_init (exp);
-  mpfr_init (absv);
-  mpfr_init (pow2);
-
-  mpfr_abs (absv, x->value.real, GFC_RND_MODE);
-  mpfr_log2 (exp, absv, GFC_RND_MODE);
-
-  mpfr_trunc (exp, exp);
-  mpfr_add_ui (exp, exp, 1, GFC_RND_MODE);
-
-  mpfr_ui_pow (pow2, 2, exp, GFC_RND_MODE);
-
-  mpfr_div (result->value.real, x->value.real, pow2, GFC_RND_MODE);
-
-  mpfr_clears (exp, absv, pow2, NULL);
-
-#else
-
   /* mpfr_frexp() correctly handles zeros and NaNs.  */
   mpfr_frexp (&e, result->value.real, x->value.real, GFC_RND_MODE);
 
-#endif
-
   return range_check (result, "FRACTION");
 }