public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH]: bump minimum MPFR version, (includes some fortran bits)
@ 2008-10-05  5:56 Kaveh R. GHAZI
  2008-10-05 13:52 ` Richard Guenther
                   ` (2 more replies)
  0 siblings, 3 replies; 36+ messages in thread
From: Kaveh R. GHAZI @ 2008-10-05  5:56 UTC (permalink / raw)
  To: gcc, gcc-patches; +Cc: fortran

Since we're in stage3, I'm raising the issue of the MPFR version we
require for GCC, just as in last year's stage3 for gcc-4.3:
http://gcc.gnu.org/ml/gcc/2007-12/msg00298.html

I'd like to increase the "minimum" MPFR version to 2.3.0, (which has been
released since Aug 2007).  The "recommended" version of MPFR can be bumped
to the latest which is 2.3.2.

Doing this will allow me to remove several MPFR cpp conditionals in the
middle-end as well as in the fortran frontend.  It also helps for future
work I plan to do with folding c99 complex number math functions, as that
work will require mpfr-2.3.0.

Patch bootstrapped on x86_64-unknown-linux-gnu using mpfr-2.3.2, no
regresions.  I also configured with mpfr-2.2.0 to ensure that GCC still
fails the relevant checks with older versions of mpfr.

If approved, I'll again wait a week before installing so people can
upgrade their regtesters if necessary.

Okay for mainline?

		Thanks,
		--Kaveh


2008-10-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.ac (MPFR check): Bump minimum version to 2.3.0 and
	recommended version to 2.3.2.
	* builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
	* doc/install.texi: Bump recommended MPFR to 2.3.2.

	* configure: Regenerate.

fortran:
	* simplify.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.

diff -rup orig/egcc-SVN20081001/configure.ac egcc-SVN20081001/configure.ac
--- orig/egcc-SVN20081001/configure.ac	2008-09-06 02:00:10.000000000 +0200
+++ egcc-SVN20081001/configure.ac	2008-10-04 20:19:15.000000000 +0200
@@ -1267,11 +1267,11 @@ if test -d ${srcdir}/gcc && test "x$have
   if test x"$have_gmp" = xyes; then
     saved_LIBS="$LIBS"
     LIBS="$LIBS $gmplibs"
-    dnl MPFR 2.2.1 is acceptable, but MPFR 2.3.0 is better.
+    dnl MPFR 2.3.0 is acceptable, but MPFR 2.3.2 is better.
     AC_MSG_CHECKING([for correct version of mpfr.h])
     AC_TRY_LINK([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,2,1)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,0)
     choke me
     #endif
     mpfr_t n;
@@ -1284,7 +1284,7 @@ if test -d ${srcdir}/gcc && test "x$have
     mpfr_subnormalize (x, t, GMP_RNDN);
     ], [AC_TRY_LINK([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,2)
     choke me
     #endif
     mpfr_t n; mpfr_init(n);
@@ -1295,7 +1295,7 @@ if test -d ${srcdir}/gcc && test "x$have
   CFLAGS="$saved_CFLAGS"

   if test x$have_gmp != xyes; then
-    AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
+    AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.3.2+.
 Try the --with-gmp and/or --with-mpfr options to specify their locations.
 Copies of these libraries' source code can be found at their respective
 hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
diff -rup orig/egcc-SVN20081001/gcc/builtins.c egcc-SVN20081001/gcc/builtins.c
--- orig/egcc-SVN20081001/gcc/builtins.c	2008-08-30 02:00:13.000000000 +0200
+++ egcc-SVN20081001/gcc/builtins.c	2008-10-04 20:22:06.000000000 +0200
@@ -231,13 +231,11 @@ static tree do_mpfr_arg2 (tree, tree, tr
 static tree do_mpfr_arg3 (tree, tree, tree, tree,
 			  int (*)(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t));
 static tree do_mpfr_sincos (tree, tree, tree);
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
 static tree do_mpfr_bessel_n (tree, tree, tree,
 			      int (*)(mpfr_ptr, long, mpfr_srcptr, mp_rnd_t),
 			      const REAL_VALUE_TYPE *, bool);
 static tree do_mpfr_remquo (tree, tree, tree);
 static tree do_mpfr_lgamma_r (tree, tree, tree);
-#endif

 /* Return true if NODE should be considered for inline expansion regardless
    of the optimization level.  This means whenever a function is invoked with
@@ -10112,7 +10110,6 @@ fold_builtin_1 (tree fndecl, tree arg0,
 			     &dconstm1, NULL, false);
     break;

-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
     CASE_FLT_FN (BUILT_IN_J0):
       if (validate_arg (arg0, REAL_TYPE))
 	return do_mpfr_arg1 (arg0, type, mpfr_j0,
@@ -10136,7 +10133,6 @@ fold_builtin_1 (tree fndecl, tree arg0,
 	return do_mpfr_arg1 (arg0, type, mpfr_y1,
 			     &dconst0, NULL, false);
     break;
-#endif

     CASE_FLT_FN (BUILT_IN_NAN):
     case BUILT_IN_NAND32:
@@ -10252,7 +10248,6 @@ fold_builtin_2 (tree fndecl, tree arg0,

   switch (fcode)
     {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
     CASE_FLT_FN (BUILT_IN_JN):
       if (validate_arg (arg0, INTEGER_TYPE)
 	  && validate_arg (arg1, REAL_TYPE))
@@ -10279,7 +10274,6 @@ fold_builtin_2 (tree fndecl, tree arg0,
 	  && validate_arg(arg1, POINTER_TYPE))
 	return do_mpfr_lgamma_r (arg0, arg1, type);
     break;
-#endif

     CASE_FLT_FN (BUILT_IN_ATAN2):
       if (validate_arg (arg0, REAL_TYPE)
@@ -10436,14 +10430,12 @@ fold_builtin_3 (tree fndecl, tree arg0,
 	return do_mpfr_arg3 (arg0, arg1, arg2, type, mpfr_fma);
     break;

-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
     CASE_FLT_FN (BUILT_IN_REMQUO):
       if (validate_arg (arg0, REAL_TYPE)
 	  && validate_arg(arg1, REAL_TYPE)
 	  && validate_arg(arg2, POINTER_TYPE))
 	return do_mpfr_remquo (arg0, arg1, arg2);
     break;
-#endif

     case BUILT_IN_MEMSET:
       return fold_builtin_memset (arg0, arg1, arg2, type, ignore);
@@ -13054,7 +13046,6 @@ do_mpfr_sincos (tree arg, tree arg_sinp,
   return result;
 }

-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
 /* If argument ARG1 is an INTEGER_CST and ARG2 is a REAL_CST, call the
    two-argument mpfr order N Bessel function FUNC on them and return
    the resulting value as a tree with type TYPE.  The mpfr precision
@@ -13239,7 +13230,6 @@ do_mpfr_lgamma_r (tree arg, tree arg_sg,

   return result;
 }
-#endif

 /* FIXME tuples.
    The functions below provide an alternate interface for folding
diff -rup orig/egcc-SVN20081001/gcc/doc/install.texi egcc-SVN20081001/gcc/doc/install.texi
--- orig/egcc-SVN20081001/gcc/doc/install.texi	2008-09-14 02:00:04.000000000 +0200
+++ egcc-SVN20081001/gcc/doc/install.texi	2008-10-04 20:20:03.000000000 +0200
@@ -309,7 +309,7 @@ library search path, you will have to co
 @option{--with-gmp} configure option.  See also
 @option{--with-gmp-lib} and @option{--with-gmp-include}.

-@item MPFR Library version 2.3.0 (or later)
+@item MPFR Library version 2.3.2 (or later)

 Necessary to build GCC@.  It can be downloaded from
 @uref{http://www.mpfr.org/}.  The version of MPFR that is bundled with
diff -rup orig/egcc-SVN20081001/gcc/fortran/simplify.c egcc-SVN20081001/gcc/fortran/simplify.c
--- orig/egcc-SVN20081001/gcc/fortran/simplify.c	2008-09-12 02:00:04.000000000 +0200
+++ egcc-SVN20081001/gcc/fortran/simplify.c	2008-10-04 20:22:58.000000000 +0200
@@ -668,7 +668,6 @@ gfc_simplify_atan2 (gfc_expr *y, gfc_exp
 gfc_expr *
 gfc_simplify_bessel_j0 (gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;

   if (x->expr_type != EXPR_CONSTANT)
@@ -678,16 +677,12 @@ gfc_simplify_bessel_j0 (gfc_expr *x ATTR
   mpfr_j0 (result->value.real, x->value.real, GFC_RND_MODE);

   return range_check (result, "BESSEL_J0");
-#else
-  return NULL;
-#endif
 }


 gfc_expr *
 gfc_simplify_bessel_j1 (gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;

   if (x->expr_type != EXPR_CONSTANT)
@@ -697,9 +692,6 @@ gfc_simplify_bessel_j1 (gfc_expr *x ATTR
   mpfr_j1 (result->value.real, x->value.real, GFC_RND_MODE);

   return range_check (result, "BESSEL_J1");
-#else
-  return NULL;
-#endif
 }


@@ -707,7 +699,6 @@ gfc_expr *
 gfc_simplify_bessel_jn (gfc_expr *order ATTRIBUTE_UNUSED,
 			gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;
   long n;

@@ -719,16 +710,12 @@ gfc_simplify_bessel_jn (gfc_expr *order
   mpfr_jn (result->value.real, n, x->value.real, GFC_RND_MODE);

   return range_check (result, "BESSEL_JN");
-#else
-  return NULL;
-#endif
 }


 gfc_expr *
 gfc_simplify_bessel_y0 (gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;

   if (x->expr_type != EXPR_CONSTANT)
@@ -738,16 +725,12 @@ gfc_simplify_bessel_y0 (gfc_expr *x ATTR
   mpfr_y0 (result->value.real, x->value.real, GFC_RND_MODE);

   return range_check (result, "BESSEL_Y0");
-#else
-  return NULL;
-#endif
 }


 gfc_expr *
 gfc_simplify_bessel_y1 (gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;

   if (x->expr_type != EXPR_CONSTANT)
@@ -757,9 +740,6 @@ gfc_simplify_bessel_y1 (gfc_expr *x ATTR
   mpfr_y1 (result->value.real, x->value.real, GFC_RND_MODE);

   return range_check (result, "BESSEL_Y1");
-#else
-  return NULL;
-#endif
 }


@@ -767,7 +747,6 @@ gfc_expr *
 gfc_simplify_bessel_yn (gfc_expr *order ATTRIBUTE_UNUSED,
 			gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;
   long n;

@@ -779,9 +758,6 @@ gfc_simplify_bessel_yn (gfc_expr *order
   mpfr_yn (result->value.real, n, x->value.real, GFC_RND_MODE);

   return range_check (result, "BESSEL_YN");
-#else
-  return NULL;
-#endif
 }


@@ -2459,7 +2435,6 @@ gfc_simplify_len_trim (gfc_expr *e, gfc_
 gfc_expr *
 gfc_simplify_lgamma (gfc_expr *x ATTRIBUTE_UNUSED)
 {
-#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
   gfc_expr *result;
   int sg;

@@ -2471,9 +2446,6 @@ gfc_simplify_lgamma (gfc_expr *x ATTRIBU
   mpfr_lgamma (result->value.real, &sg, x->value.real, GFC_RND_MODE);

   return range_check (result, "LGAMMA");
-#else
-  return NULL;
-#endif
 }


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-05  5:56 [PATCH]: bump minimum MPFR version, (includes some fortran bits) Kaveh R. GHAZI
@ 2008-10-05 13:52 ` Richard Guenther
  2008-10-05 14:10   ` Gerald Pfeifer
  2008-10-06 23:37   ` Kaveh R. Ghazi
  2008-10-06 13:56 ` Adrian Bunk
  2008-10-26 12:59 ` [PATCH]: bump minimum MPFR version, (includes some fortran bits) Geoff Keating
  2 siblings, 2 replies; 36+ messages in thread
From: Richard Guenther @ 2008-10-05 13:52 UTC (permalink / raw)
  To: Kaveh R. GHAZI; +Cc: gcc, gcc-patches, fortran

On Sun, Oct 5, 2008 at 3:33 AM, Kaveh R. GHAZI <ghazi@caip.rutgers.edu> wrote:
> Since we're in stage3, I'm raising the issue of the MPFR version we
> require for GCC, just as in last year's stage3 for gcc-4.3:
> http://gcc.gnu.org/ml/gcc/2007-12/msg00298.html
>
> I'd like to increase the "minimum" MPFR version to 2.3.0, (which has been
> released since Aug 2007).  The "recommended" version of MPFR can be bumped
> to the latest which is 2.3.2.
>
> Doing this will allow me to remove several MPFR cpp conditionals in the
> middle-end as well as in the fortran frontend.  It also helps for future
> work I plan to do with folding c99 complex number math functions, as that
> work will require mpfr-2.3.0.
>
> Patch bootstrapped on x86_64-unknown-linux-gnu using mpfr-2.3.2, no
> regresions.  I also configured with mpfr-2.2.0 to ensure that GCC still
> fails the relevant checks with older versions of mpfr.
>
> If approved, I'll again wait a week before installing so people can
> upgrade their regtesters if necessary.

This is reasonable.  Note that
http://gcc.gnu.org/install/prerequisites.html already lists
mpfr 2.3.0 as prerequesite (that page still might need an update for
clarification).

> Okay for mainline?

Ok if there are no objections within the week.

Thanks,
Richard.

>                Thanks,
>                --Kaveh
>
>
> 2008-10-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
>
>        * configure.ac (MPFR check): Bump minimum version to 2.3.0 and
>        recommended version to 2.3.2.
>        * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
>        * doc/install.texi: Bump recommended MPFR to 2.3.2.
>
>        * configure: Regenerate.
>
> fortran:
>        * simplify.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
>
> diff -rup orig/egcc-SVN20081001/configure.ac egcc-SVN20081001/configure.ac
> --- orig/egcc-SVN20081001/configure.ac  2008-09-06 02:00:10.000000000 +0200
> +++ egcc-SVN20081001/configure.ac       2008-10-04 20:19:15.000000000 +0200
> @@ -1267,11 +1267,11 @@ if test -d ${srcdir}/gcc && test "x$have
>   if test x"$have_gmp" = xyes; then
>     saved_LIBS="$LIBS"
>     LIBS="$LIBS $gmplibs"
> -    dnl MPFR 2.2.1 is acceptable, but MPFR 2.3.0 is better.
> +    dnl MPFR 2.3.0 is acceptable, but MPFR 2.3.2 is better.
>     AC_MSG_CHECKING([for correct version of mpfr.h])
>     AC_TRY_LINK([#include <gmp.h>
>     #include <mpfr.h>],[
> -    #if MPFR_VERSION < MPFR_VERSION_NUM(2,2,1)
> +    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,0)
>     choke me
>     #endif
>     mpfr_t n;
> @@ -1284,7 +1284,7 @@ if test -d ${srcdir}/gcc && test "x$have
>     mpfr_subnormalize (x, t, GMP_RNDN);
>     ], [AC_TRY_LINK([#include <gmp.h>
>     #include <mpfr.h>],[
> -    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,0)
> +    #if MPFR_VERSION < MPFR_VERSION_NUM(2,3,2)
>     choke me
>     #endif
>     mpfr_t n; mpfr_init(n);
> @@ -1295,7 +1295,7 @@ if test -d ${srcdir}/gcc && test "x$have
>   CFLAGS="$saved_CFLAGS"
>
>   if test x$have_gmp != xyes; then
> -    AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
> +    AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.3.2+.
>  Try the --with-gmp and/or --with-mpfr options to specify their locations.
>  Copies of these libraries' source code can be found at their respective
>  hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
> diff -rup orig/egcc-SVN20081001/gcc/builtins.c egcc-SVN20081001/gcc/builtins.c
> --- orig/egcc-SVN20081001/gcc/builtins.c        2008-08-30 02:00:13.000000000 +0200
> +++ egcc-SVN20081001/gcc/builtins.c     2008-10-04 20:22:06.000000000 +0200
> @@ -231,13 +231,11 @@ static tree do_mpfr_arg2 (tree, tree, tr
>  static tree do_mpfr_arg3 (tree, tree, tree, tree,
>                          int (*)(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t));
>  static tree do_mpfr_sincos (tree, tree, tree);
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>  static tree do_mpfr_bessel_n (tree, tree, tree,
>                              int (*)(mpfr_ptr, long, mpfr_srcptr, mp_rnd_t),
>                              const REAL_VALUE_TYPE *, bool);
>  static tree do_mpfr_remquo (tree, tree, tree);
>  static tree do_mpfr_lgamma_r (tree, tree, tree);
> -#endif
>
>  /* Return true if NODE should be considered for inline expansion regardless
>    of the optimization level.  This means whenever a function is invoked with
> @@ -10112,7 +10110,6 @@ fold_builtin_1 (tree fndecl, tree arg0,
>                             &dconstm1, NULL, false);
>     break;
>
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>     CASE_FLT_FN (BUILT_IN_J0):
>       if (validate_arg (arg0, REAL_TYPE))
>        return do_mpfr_arg1 (arg0, type, mpfr_j0,
> @@ -10136,7 +10133,6 @@ fold_builtin_1 (tree fndecl, tree arg0,
>        return do_mpfr_arg1 (arg0, type, mpfr_y1,
>                             &dconst0, NULL, false);
>     break;
> -#endif
>
>     CASE_FLT_FN (BUILT_IN_NAN):
>     case BUILT_IN_NAND32:
> @@ -10252,7 +10248,6 @@ fold_builtin_2 (tree fndecl, tree arg0,
>
>   switch (fcode)
>     {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>     CASE_FLT_FN (BUILT_IN_JN):
>       if (validate_arg (arg0, INTEGER_TYPE)
>          && validate_arg (arg1, REAL_TYPE))
> @@ -10279,7 +10274,6 @@ fold_builtin_2 (tree fndecl, tree arg0,
>          && validate_arg(arg1, POINTER_TYPE))
>        return do_mpfr_lgamma_r (arg0, arg1, type);
>     break;
> -#endif
>
>     CASE_FLT_FN (BUILT_IN_ATAN2):
>       if (validate_arg (arg0, REAL_TYPE)
> @@ -10436,14 +10430,12 @@ fold_builtin_3 (tree fndecl, tree arg0,
>        return do_mpfr_arg3 (arg0, arg1, arg2, type, mpfr_fma);
>     break;
>
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>     CASE_FLT_FN (BUILT_IN_REMQUO):
>       if (validate_arg (arg0, REAL_TYPE)
>          && validate_arg(arg1, REAL_TYPE)
>          && validate_arg(arg2, POINTER_TYPE))
>        return do_mpfr_remquo (arg0, arg1, arg2);
>     break;
> -#endif
>
>     case BUILT_IN_MEMSET:
>       return fold_builtin_memset (arg0, arg1, arg2, type, ignore);
> @@ -13054,7 +13046,6 @@ do_mpfr_sincos (tree arg, tree arg_sinp,
>   return result;
>  }
>
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>  /* If argument ARG1 is an INTEGER_CST and ARG2 is a REAL_CST, call the
>    two-argument mpfr order N Bessel function FUNC on them and return
>    the resulting value as a tree with type TYPE.  The mpfr precision
> @@ -13239,7 +13230,6 @@ do_mpfr_lgamma_r (tree arg, tree arg_sg,
>
>   return result;
>  }
> -#endif
>
>  /* FIXME tuples.
>    The functions below provide an alternate interface for folding
> diff -rup orig/egcc-SVN20081001/gcc/doc/install.texi egcc-SVN20081001/gcc/doc/install.texi
> --- orig/egcc-SVN20081001/gcc/doc/install.texi  2008-09-14 02:00:04.000000000 +0200
> +++ egcc-SVN20081001/gcc/doc/install.texi       2008-10-04 20:20:03.000000000 +0200
> @@ -309,7 +309,7 @@ library search path, you will have to co
>  @option{--with-gmp} configure option.  See also
>  @option{--with-gmp-lib} and @option{--with-gmp-include}.
>
> -@item MPFR Library version 2.3.0 (or later)
> +@item MPFR Library version 2.3.2 (or later)
>
>  Necessary to build GCC@.  It can be downloaded from
>  @uref{http://www.mpfr.org/}.  The version of MPFR that is bundled with
> diff -rup orig/egcc-SVN20081001/gcc/fortran/simplify.c egcc-SVN20081001/gcc/fortran/simplify.c
> --- orig/egcc-SVN20081001/gcc/fortran/simplify.c        2008-09-12 02:00:04.000000000 +0200
> +++ egcc-SVN20081001/gcc/fortran/simplify.c     2008-10-04 20:22:58.000000000 +0200
> @@ -668,7 +668,6 @@ gfc_simplify_atan2 (gfc_expr *y, gfc_exp
>  gfc_expr *
>  gfc_simplify_bessel_j0 (gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>
>   if (x->expr_type != EXPR_CONSTANT)
> @@ -678,16 +677,12 @@ gfc_simplify_bessel_j0 (gfc_expr *x ATTR
>   mpfr_j0 (result->value.real, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "BESSEL_J0");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
>  gfc_expr *
>  gfc_simplify_bessel_j1 (gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>
>   if (x->expr_type != EXPR_CONSTANT)
> @@ -697,9 +692,6 @@ gfc_simplify_bessel_j1 (gfc_expr *x ATTR
>   mpfr_j1 (result->value.real, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "BESSEL_J1");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
> @@ -707,7 +699,6 @@ gfc_expr *
>  gfc_simplify_bessel_jn (gfc_expr *order ATTRIBUTE_UNUSED,
>                        gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>   long n;
>
> @@ -719,16 +710,12 @@ gfc_simplify_bessel_jn (gfc_expr *order
>   mpfr_jn (result->value.real, n, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "BESSEL_JN");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
>  gfc_expr *
>  gfc_simplify_bessel_y0 (gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>
>   if (x->expr_type != EXPR_CONSTANT)
> @@ -738,16 +725,12 @@ gfc_simplify_bessel_y0 (gfc_expr *x ATTR
>   mpfr_y0 (result->value.real, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "BESSEL_Y0");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
>  gfc_expr *
>  gfc_simplify_bessel_y1 (gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>
>   if (x->expr_type != EXPR_CONSTANT)
> @@ -757,9 +740,6 @@ gfc_simplify_bessel_y1 (gfc_expr *x ATTR
>   mpfr_y1 (result->value.real, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "BESSEL_Y1");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
> @@ -767,7 +747,6 @@ gfc_expr *
>  gfc_simplify_bessel_yn (gfc_expr *order ATTRIBUTE_UNUSED,
>                        gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>   long n;
>
> @@ -779,9 +758,6 @@ gfc_simplify_bessel_yn (gfc_expr *order
>   mpfr_yn (result->value.real, n, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "BESSEL_YN");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
> @@ -2459,7 +2435,6 @@ gfc_simplify_len_trim (gfc_expr *e, gfc_
>  gfc_expr *
>  gfc_simplify_lgamma (gfc_expr *x ATTRIBUTE_UNUSED)
>  {
> -#if MPFR_VERSION >= MPFR_VERSION_NUM(2,3,0)
>   gfc_expr *result;
>   int sg;
>
> @@ -2471,9 +2446,6 @@ gfc_simplify_lgamma (gfc_expr *x ATTRIBU
>   mpfr_lgamma (result->value.real, &sg, x->value.real, GFC_RND_MODE);
>
>   return range_check (result, "LGAMMA");
> -#else
> -  return NULL;
> -#endif
>  }
>
>
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran  bits)
  2008-10-05 13:52 ` Richard Guenther
@ 2008-10-05 14:10   ` Gerald Pfeifer
  2008-10-05 14:43     ` Richard Guenther
  2008-10-06 23:37   ` Kaveh R. Ghazi
  1 sibling, 1 reply; 36+ messages in thread
From: Gerald Pfeifer @ 2008-10-05 14:10 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Kaveh R. GHAZI, gcc, gcc-patches, fortran

On Sun, 5 Oct 2008, Richard Guenther wrote:
> This is reasonable.  Note that
> http://gcc.gnu.org/install/prerequisites.html already lists
> mpfr 2.3.0 as prerequesite (that page still might need an update for
> clarification).

That page is generated from gcc/doc/install.texi, so once Kaveh has
committed his patch it should be updated within (at most) 24 hours.

If not, let me know guys, and I'll try to debug it. :-)

Gerald

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-05 14:10   ` Gerald Pfeifer
@ 2008-10-05 14:43     ` Richard Guenther
  2008-10-05 16:34       ` Manuel López-Ibáñez
  0 siblings, 1 reply; 36+ messages in thread
From: Richard Guenther @ 2008-10-05 14:43 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: Kaveh R. GHAZI, gcc, gcc-patches, fortran

On Sun, Oct 5, 2008 at 3:51 PM, Gerald Pfeifer <gerald@pfeifer.com> wrote:
> On Sun, 5 Oct 2008, Richard Guenther wrote:
>> This is reasonable.  Note that
>> http://gcc.gnu.org/install/prerequisites.html already lists
>> mpfr 2.3.0 as prerequesite (that page still might need an update for
>> clarification).
>
> That page is generated from gcc/doc/install.texi, so once Kaveh has
> committed his patch it should be updated within (at most) 24 hours.
>
> If not, let me know guys, and I'll try to debug it. :-)

Ah, right.  Don't we want this page to be version-specific beyond
gcc.gnu.org/gcc-X.Y/?
(like all of the installation instructions, liked from onlinedocs/
there is only instructions
for trunk).

Richard.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-05 14:43     ` Richard Guenther
@ 2008-10-05 16:34       ` Manuel López-Ibáñez
  0 siblings, 0 replies; 36+ messages in thread
From: Manuel López-Ibáñez @ 2008-10-05 16:34 UTC (permalink / raw)
  To: Richard Guenther
  Cc: Gerald Pfeifer, Kaveh R. GHAZI, gcc, gcc-patches, fortran

2008/10/5 Richard Guenther <richard.guenther@gmail.com>:
> Ah, right.  Don't we want this page to be version-specific beyond
> gcc.gnu.org/gcc-X.Y/?
> (like all of the installation instructions, liked from onlinedocs/
> there is only instructions
> for trunk).

This is bug 32927.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32927

Cheers,

Manuel.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran  bits)
  2008-10-05  5:56 [PATCH]: bump minimum MPFR version, (includes some fortran bits) Kaveh R. GHAZI
  2008-10-05 13:52 ` Richard Guenther
@ 2008-10-06 13:56 ` Adrian Bunk
  2008-10-06 23:16   ` [PATCH]: bump minimum MPFR version, (includes some fortranbits) Kaveh R. Ghazi
  2008-10-26 12:59 ` [PATCH]: bump minimum MPFR version, (includes some fortran bits) Geoff Keating
  2 siblings, 1 reply; 36+ messages in thread
From: Adrian Bunk @ 2008-10-06 13:56 UTC (permalink / raw)
  To: Kaveh R. GHAZI; +Cc: gcc, gcc-patches, fortran

On Sat, Oct 04, 2008 at 09:33:48PM -0400, Kaveh R. GHAZI wrote:
> Since we're in stage3, I'm raising the issue of the MPFR version we
> require for GCC, just as in last year's stage3 for gcc-4.3:
> http://gcc.gnu.org/ml/gcc/2007-12/msg00298.html
> 
> I'd like to increase the "minimum" MPFR version to 2.3.0, (which has been
> released since Aug 2007).  The "recommended" version of MPFR can be bumped
> to the latest which is 2.3.2.
>...

Considering that your patch removes the conditionals on MPFR versions 
from the code (good!), is there any reason for gcc to keep this unusual 
minimum/recommended split in the requirement?

Either 2.3.0 is good enough, or 2.3.2 contains some critical fix
and should be the minimum version.

Anything I miss?

> 		Thanks,
> 		--Kaveh
>...

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-06 13:56 ` Adrian Bunk
@ 2008-10-06 23:16   ` Kaveh R. Ghazi
  2008-10-06 23:40     ` Ben Elliston
  2008-10-07 18:52     ` Adrian Bunk
  0 siblings, 2 replies; 36+ messages in thread
From: Kaveh R. Ghazi @ 2008-10-06 23:16 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: gcc, gcc-patches, fortran

From: "Adrian Bunk" <bunk@stusta.de>

> On Sat, Oct 04, 2008 at 09:33:48PM -0400, Kaveh R. GHAZI wrote:
>> Since we're in stage3, I'm raising the issue of the MPFR version we
>> require for GCC, just as in last year's stage3 for gcc-4.3:
>> http://gcc.gnu.org/ml/gcc/2007-12/msg00298.html
>>
>> I'd like to increase the "minimum" MPFR version to 2.3.0, (which has been
>> released since Aug 2007).  The "recommended" version of MPFR can be 
>> bumped
>> to the latest which is 2.3.2.
>>...
>
> Considering that your patch removes the conditionals on MPFR versions
> from the code (good!), is there any reason for gcc to keep this unusual
> minimum/recommended split in the requirement?
>
> Either 2.3.0 is good enough, or 2.3.2 contains some critical fix
> and should be the minimum version.

The last time this came up, the consensus was that we should not hard fail 
the configure script even if the user would then be missing some mpfr bugfix 
in the latest/greatest release.  That's why we have the minimum/recommended 
split.

But I see no reason not to encourage people and/or make them aware of the 
need to upgrade if they are so inclined.  Whether a particular fix is 
"critical" can be in the eye of the beholder.

        --Kaveh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-05 13:52 ` Richard Guenther
  2008-10-05 14:10   ` Gerald Pfeifer
@ 2008-10-06 23:37   ` Kaveh R. Ghazi
  2008-10-07  7:55     ` Janne Blomqvist
  1 sibling, 1 reply; 36+ messages in thread
From: Kaveh R. Ghazi @ 2008-10-06 23:37 UTC (permalink / raw)
  To: Richard Guenther; +Cc: gcc, gcc-patches, fortran

From: "Richard Guenther" <richard.guenther@gmail.com>

> On Sun, Oct 5, 2008 at 3:33 AM, Kaveh R. GHAZI <ghazi@caip.rutgers.edu> 
> wrote:
>> Okay for mainline?
>
> Ok if there are no objections within the week.
>
> Thanks,
> Richard.

Great, thanks.  Can I get an explicit ack from a fortran maintainer as well?

        Regards,
        --Kaveh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-06 23:16   ` [PATCH]: bump minimum MPFR version, (includes some fortranbits) Kaveh R. Ghazi
@ 2008-10-06 23:40     ` Ben Elliston
  2008-10-07  0:35       ` Andrew Pinski
  2008-10-07 18:52     ` Adrian Bunk
  1 sibling, 1 reply; 36+ messages in thread
From: Ben Elliston @ 2008-10-06 23:40 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: Adrian Bunk, gcc, gcc-patches, fortran

On Mon, 2008-10-06 at 16:10 -0700, Kaveh R. Ghazi wrote:

> The last time this came up, the consensus was that we should not hard fail 
> the configure script even if the user would then be missing some mpfr bugfix 
> in the latest/greatest release.  That's why we have the minimum/recommended 
> split.

Doesn't this mean that we can then have two different versions of GCC
(as identified by gcc --version), linked with different mpfr libraries,
that may exhibit different behaviour?

Ben


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-06 23:40     ` Ben Elliston
@ 2008-10-07  0:35       ` Andrew Pinski
  0 siblings, 0 replies; 36+ messages in thread
From: Andrew Pinski @ 2008-10-07  0:35 UTC (permalink / raw)
  To: Ben Elliston; +Cc: Kaveh R. Ghazi, Adrian Bunk, gcc, gcc-patches, fortran

On Mon, Oct 6, 2008 at 4:36 PM, Ben Elliston <bje@au1.ibm.com> wrote:
> On Mon, 2008-10-06 at 16:10 -0700, Kaveh R. Ghazi wrote:
>
>> The last time this came up, the consensus was that we should not hard fail
>> the configure script even if the user would then be missing some mpfr bugfix
>> in the latest/greatest release.  That's why we have the minimum/recommended
>> split.
>
> Doesn't this mean that we can then have two different versions of GCC
> (as identified by gcc --version), linked with different mpfr libraries,
> that may exhibit different behaviour?

Semi, we do output the version of MPFR in cc1 --version output:
GNU C (GCC) version 4.4.0 20081003 (experimental) [trunk revision
140850] (i386-apple-darwin8.11.1)
        compiled by GNU C version 4.4.0 20081003 (experimental) [trunk
revision 140850], GMP version 4.2.2, MPFR version 2.3.0.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-06 23:37   ` Kaveh R. Ghazi
@ 2008-10-07  7:55     ` Janne Blomqvist
  0 siblings, 0 replies; 36+ messages in thread
From: Janne Blomqvist @ 2008-10-07  7:55 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: gcc, gcc-patches, fortran

On Tue, Oct 7, 2008 at 2:15 AM, Kaveh R. Ghazi <ghazi@caip.rutgers.edu> wrote:
> From: "Richard Guenther" <richard.guenther@gmail.com>
>
>> On Sun, Oct 5, 2008 at 3:33 AM, Kaveh R. GHAZI <ghazi@caip.rutgers.edu>
>> wrote:
>>>
>>> Okay for mainline?
>>
>> Ok if there are no objections within the week.
>>
>> Thanks,
>> Richard.
>
> Great, thanks.  Can I get an explicit ack from a fortran maintainer as well?

Ok.

-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-06 23:16   ` [PATCH]: bump minimum MPFR version, (includes some fortranbits) Kaveh R. Ghazi
  2008-10-06 23:40     ` Ben Elliston
@ 2008-10-07 18:52     ` Adrian Bunk
  2008-10-13 16:00       ` Vincent Lefevre
  1 sibling, 1 reply; 36+ messages in thread
From: Adrian Bunk @ 2008-10-07 18:52 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: gcc, gcc-patches, fortran

On Mon, Oct 06, 2008 at 04:10:04PM -0700, Kaveh R. Ghazi wrote:
> From: "Adrian Bunk" <bunk@stusta.de>
>
>> On Sat, Oct 04, 2008 at 09:33:48PM -0400, Kaveh R. GHAZI wrote:
>>> Since we're in stage3, I'm raising the issue of the MPFR version we
>>> require for GCC, just as in last year's stage3 for gcc-4.3:
>>> http://gcc.gnu.org/ml/gcc/2007-12/msg00298.html
>>>
>>> I'd like to increase the "minimum" MPFR version to 2.3.0, (which has been
>>> released since Aug 2007).  The "recommended" version of MPFR can be  
>>> bumped
>>> to the latest which is 2.3.2.
>>> ...
>>
>> Considering that your patch removes the conditionals on MPFR versions
>> from the code (good!), is there any reason for gcc to keep this unusual
>> minimum/recommended split in the requirement?
>>
>> Either 2.3.0 is good enough, or 2.3.2 contains some critical fix
>> and should be the minimum version.
>
> The last time this came up, the consensus was that we should not hard 
> fail the configure script even if the user would then be missing some 
> mpfr bugfix in the latest/greatest release.  That's why we have the 
> minimum/recommended split.

I see the point for the 2.2.1/2.3.0 versions since 2.3.0 introduced
additional functionality gcc can use.

> But I see no reason not to encourage people and/or make them aware of the 
> need to upgrade if they are so inclined.  Whether a particular fix is  
> "critical" can be in the eye of the beholder.

But is there any "need to upgrade" to 2.3.2 since it would fix a bug gcc 
ran into?

IMHO it's not "in the eye of the beholder" whether 2.3.2 contains a
"critical" fix _for usage by gcc_.

>        --Kaveh

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-07 18:52     ` Adrian Bunk
@ 2008-10-13 16:00       ` Vincent Lefevre
  2008-10-13 16:42         ` Antwort: " Markus Milleder
  0 siblings, 1 reply; 36+ messages in thread
From: Vincent Lefevre @ 2008-10-13 16:00 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Kaveh R. Ghazi, gcc, gcc-patches, fortran

On 2008-10-07 21:42:30 +0300, Adrian Bunk wrote:
> But is there any "need to upgrade" to 2.3.2 since it would fix a bug
> gcc ran into?

FYI, GCC can be affected by some bugs in MPFR 2.3.0, amongst the bugs
listed on <http://www.mpfr.org/mpfr-2.3.0/#fixed>. I think that the
bugs in question are:

  * The mpfr_gamma function applied on a huge integer fails on 64-bit
    machines. But I don't know what the failure was (Paul Zimmermann
    fixed this bug, so that he should know more than me).
    Note: any double-precision number >= 2^52 is an integer.

  * The mpfr_erfc function is very inefficient on large negative
    numbers.

  * The mpfr_j0 function applied on a large negative number and the
    mpfr_jn function applied on (even integer, large negative number)
    return a result with a wrong sign.

  * The mpfr_asin function applied on ±0 does not set the sign of the
    null result.

  * The mpfr_gamma function can return a result with a wrong sign
    (negative instead of positive) in case of underflow with a
    positive value, e.g. on -1000000001.5 in the default exponent
    range.

and perhaps bugs in mpfr_pow on particular values.

All these bugs were fixed in MPFR 2.3.1. AFAIK, MPFR 2.3.2 should
not make any difference for GCC. The fixed bugs are listed here:
<http://www.mpfr.org/mpfr-2.3.1/#fixed>. They mainly concern
underflow/overflow exceptions, which should not occur on
double-precision numbers. And according to my tests, it is very
unlikely that the first mpfr_exp bug can have an influence on
double-precision numbers.

-- 
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Antwort: Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-13 16:00       ` Vincent Lefevre
@ 2008-10-13 16:42         ` Markus Milleder
  2008-10-13 17:15           ` Adrian Bunk
  0 siblings, 1 reply; 36+ messages in thread
From: Markus Milleder @ 2008-10-13 16:42 UTC (permalink / raw)
  To: vincent+gcc; +Cc: Adrian Bunk, fortran, gcc, gcc-patches, Kaveh R. Ghazi

Vincent Lefevre schrieb am 13.10.2008 16:16:38:

> On 2008-10-07 21:42:30 +0300, Adrian Bunk wrote:
> > But is there any "need to upgrade" to 2.3.2 since it would fix a bug
> > gcc ran into?
>
> FYI, GCC can be affected by some bugs in MPFR 2.3.0, amongst the bugs

<snip bug list>

> All these bugs were fixed in MPFR 2.3.1. AFAIK, MPFR 2.3.2 should
> not make any difference for GCC. The fixed bugs are listed here:

<snip again>

This seems to call for MPFR 2.3.1 as a minimum version for GCC 4.4

However, let me ask the reverse question:

Is there any reason not to demand 2.3.2 for GCC 4.4 ? Or even the newest MPFR version published before creating the GCC 4.4 release branch (which could be 2.3.3) ?

      Markus Milleder


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: [PATCH]: bump minimum MPFR version, (includes  some fortranbits)
  2008-10-13 16:42         ` Antwort: " Markus Milleder
@ 2008-10-13 17:15           ` Adrian Bunk
  2008-10-14 12:59             ` Antwort: " Markus Milleder
  0 siblings, 1 reply; 36+ messages in thread
From: Adrian Bunk @ 2008-10-13 17:15 UTC (permalink / raw)
  To: Markus Milleder; +Cc: vincent+gcc, fortran, gcc, gcc-patches, Kaveh R. Ghazi

On Mon, Oct 13, 2008 at 04:42:08PM +0200, Markus Milleder wrote:
> Vincent Lefevre schrieb am 13.10.2008 16:16:38:
> 
> > On 2008-10-07 21:42:30 +0300, Adrian Bunk wrote:
> > > But is there any "need to upgrade" to 2.3.2 since it would fix a bug
> > > gcc ran into?
> >
> > FYI, GCC can be affected by some bugs in MPFR 2.3.0, amongst the bugs
> 
> <snip bug list>
> 
> > All these bugs were fixed in MPFR 2.3.1. AFAIK, MPFR 2.3.2 should
> > not make any difference for GCC. The fixed bugs are listed here:
> 
> <snip again>
> 
> This seems to call for MPFR 2.3.1 as a minimum version for GCC 4.4
> 
> However, let me ask the reverse question:
> 
> Is there any reason not to demand 2.3.2 for GCC 4.4 ? Or even the newest MPFR version published before creating the GCC 4.4 release branch (which could be 2.3.3) ?

Upgrading can cause the user some unneeded work.

E.g. the next stable release of Debian will likely ship with 2.3.1 .
So in this specific case fulfilling a 2.3.1 requirement would be easy, 
while a 2.3.2 requirement would make it much harder to build gcc 4.4 .

And upgrading from 2.3.1 to let's say 3.0.0 might be a bad choice if
the new version contains regressions.

>       Markus Milleder

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version, (includes   some fortranbits)
  2008-10-13 17:15           ` Adrian Bunk
@ 2008-10-14 12:59             ` Markus Milleder
  2008-10-14 13:10               ` Jakub Jelinek
                                 ` (3 more replies)
  0 siblings, 4 replies; 36+ messages in thread
From: Markus Milleder @ 2008-10-14 12:59 UTC (permalink / raw)
  To: bunk; +Cc: fortran, gcc, gcc-patches, Kaveh R. Ghazi, vincent+gcc

Adrian Bunk schrieb am 13.10.2008 17:41:15:

> On Mon, Oct 13, 2008 at 04:42:08PM +0200, Markus Milleder wrote:
<snip>
> > Is there any reason not to demand 2.3.2 for GCC 4.4 ? Or even the
> newest MPFR version published before creating the GCC 4.4 release
> branch (which could be 2.3.3) ?
>
> Upgrading can cause the user some unneeded work.
>
> E.g. the next stable release of Debian will likely ship with 2.3.1 .
> So in this specific case fulfilling a 2.3.1 requirement would be easy,
> while a 2.3.2 requirement would make it much harder to build gcc 4.4 .
>
Much harder ?

I don't think anybody who tries to build GCC from source will have any
problem building MPFR first.

I can see how a distribution will probably want to have at least the
MPFR version GCC demands, which would force an MPFR upgrade to
accompany a GCC 4.4 package.

> And upgrading from 2.3.1 to let's say 3.0.0 might be a bad choice if
> the new version contains regressions.

That's why I said "before branching", this gives a time window to detect
such regressions. While the cutoff date for moving to a new revision
of MPFR may be somewhat earlier, my idea was to demand a rather current
revision.

Changing to 3.0.0 - which implies much larger changes than 2.3.3 - is
IMHO stage 1 material, maybe stage 2 if the release notes make it
exceedingly clear that the major version change is only because
of major new features, with no changes to existing ones.

      Markus Milleder


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version,  (includes   some fortranbits)
  2008-10-14 12:59             ` Antwort: " Markus Milleder
@ 2008-10-14 13:10               ` Jakub Jelinek
  2008-10-14 13:21               ` Tobias Schlüter
                                 ` (2 subsequent siblings)
  3 siblings, 0 replies; 36+ messages in thread
From: Jakub Jelinek @ 2008-10-14 13:10 UTC (permalink / raw)
  To: Markus Milleder
  Cc: bunk, fortran, gcc, gcc-patches, Kaveh R. Ghazi, vincent+gcc

On Tue, Oct 14, 2008 at 02:23:48PM +0200, Markus Milleder wrote:
> Much harder ?
> 
> I don't think anybody who tries to build GCC from source will have any
> problem building MPFR first.

It is certainly an awkward annoyance, especially when you occassionally
need to build gcc on many different boxes, with various distro versions.
Obviously on your primary devel box you'll have a fresh mpfr installed (I
still have 2.3.1 though), but if you need from time to time test on less
often tested arches, strict version requirements just eat people's valuable
time for no big benefit.

	Jakub

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes   some fortranbits)
  2008-10-14 12:59             ` Antwort: " Markus Milleder
  2008-10-14 13:10               ` Jakub Jelinek
@ 2008-10-14 13:21               ` Tobias Schlüter
  2008-10-14 14:52                 ` Adrian Bunk
  2008-10-14 13:30               ` Antwort: Re: Antwort: " Adrian Bunk
  2008-10-14 22:29               ` Nils Pipenbrinck
  3 siblings, 1 reply; 36+ messages in thread
From: Tobias Schlüter @ 2008-10-14 13:21 UTC (permalink / raw)
  To: Markus Milleder
  Cc: bunk, fortran, gcc, gcc-patches, Kaveh R. Ghazi, vincent+gcc

Markus Milleder wrote:
> Adrian Bunk schrieb am 13.10.2008 17:41:15:
>> E.g. the next stable release of Debian will likely ship with 2.3.1 .
>> So in this specific case fulfilling a 2.3.1 requirement would be easy,
>> while a 2.3.2 requirement would make it much harder to build gcc 4.4 .
>>
> Much harder ?
> 
> I don't think anybody who tries to build GCC from source will have any
> problem building MPFR first.

They don't even need to do this, as mpfr can be built in-tree.  It then 
also won't interfere with a system-wide mpfr.

> I can see how a distribution will probably want to have at least the
> MPFR version GCC demands, which would force an MPFR upgrade to
> accompany a GCC 4.4 package.
> 
>> And upgrading from 2.3.1 to let's say 3.0.0 might be a bad choice if
>> the new version contains regressions.

This is moot because for the reason given above, these hypothetical 
regressions are restricted to gcc if the person building gcc is careful.

Cheers,
- Tobi

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version,  (includes some fortranbits)
  2008-10-14 12:59             ` Antwort: " Markus Milleder
  2008-10-14 13:10               ` Jakub Jelinek
  2008-10-14 13:21               ` Tobias Schlüter
@ 2008-10-14 13:30               ` Adrian Bunk
  2008-10-14 22:29               ` Nils Pipenbrinck
  3 siblings, 0 replies; 36+ messages in thread
From: Adrian Bunk @ 2008-10-14 13:30 UTC (permalink / raw)
  To: Markus Milleder; +Cc: fortran, gcc, gcc-patches, Kaveh R. Ghazi, vincent+gcc

On Tue, Oct 14, 2008 at 02:23:48PM +0200, Markus Milleder wrote:
> Adrian Bunk schrieb am 13.10.2008 17:41:15:
>...
> > And upgrading from 2.3.1 to let's say 3.0.0 might be a bad choice if
> > the new version contains regressions.
> 
> That's why I said "before branching", this gives a time window to detect
> such regressions. While the cutoff date for moving to a new revision
> of MPFR may be somewhat earlier, my idea was to demand a rather current
> revision.
> 
> Changing to 3.0.0 - which implies much larger changes than 2.3.3 - is
> IMHO stage 1 material, maybe stage 2 if the release notes make it
> exceedingly clear that the major version change is only because
> of major new features, with no changes to existing ones.

You seem to wrongly assume gcc was bound to one specific MPFR version?

If you force someone to upgrade from 2.3.1 to >= 2.3.2 he will usually
install the then-latest version, and that might be 3.0.0 .

>       Markus Milleder

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes   some  fortranbits)
  2008-10-14 13:21               ` Tobias Schlüter
@ 2008-10-14 14:52                 ` Adrian Bunk
  2008-10-14 15:39                   ` Tobias Schlüter
  0 siblings, 1 reply; 36+ messages in thread
From: Adrian Bunk @ 2008-10-14 14:52 UTC (permalink / raw)
  To: Tobias Schlüter
  Cc: Markus Milleder, fortran, gcc, gcc-patches, Kaveh R. Ghazi, vincent+gcc

On Tue, Oct 14, 2008 at 02:37:13PM +0200, Tobias Schlüter wrote:
> Markus Milleder wrote:
>> Adrian Bunk schrieb am 13.10.2008 17:41:15:
>>> E.g. the next stable release of Debian will likely ship with 2.3.1 .
>>> So in this specific case fulfilling a 2.3.1 requirement would be easy,
>>> while a 2.3.2 requirement would make it much harder to build gcc 4.4 .
>>>
>> Much harder ?
>>
>> I don't think anybody who tries to build GCC from source will have any
>> problem building MPFR first.
>
> They don't even need to do this, as mpfr can be built in-tree.  It then  
> also won't interfere with a system-wide mpfr.
> 
>> I can see how a distribution will probably want to have at least the
>> MPFR version GCC demands, which would force an MPFR upgrade to
>> accompany a GCC 4.4 package.
>>
>>> And upgrading from 2.3.1 to let's say 3.0.0 might be a bad choice if
>>> the new version contains regressions.
>
> This is moot because for the reason given above, these hypothetical  
> regressions are restricted to gcc if the person building gcc is careful.

"careful" = uses an undocumented trick ?

Or where at http://gcc.gnu.org/install/ is this documented?

> Cheers,
> - Tobi

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes   some  fortranbits)
  2008-10-14 14:52                 ` Adrian Bunk
@ 2008-10-14 15:39                   ` Tobias Schlüter
  0 siblings, 0 replies; 36+ messages in thread
From: Tobias Schlüter @ 2008-10-14 15:39 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Markus Milleder, fortran, gcc, gcc-patches, Kaveh R. Ghazi, vincent+gcc

Adrian Bunk wrote:
> On Tue, Oct 14, 2008 at 02:37:13PM +0200, Tobias Schlüter wrote:
>> Markus Milleder wrote:
>>> Adrian Bunk schrieb am 13.10.2008 17:41:15:
>>>> E.g. the next stable release of Debian will likely ship with 2.3.1 .
>>>> So in this specific case fulfilling a 2.3.1 requirement would be easy,
>>>> while a 2.3.2 requirement would make it much harder to build gcc 4.4 .
>>>>
>>> Much harder ?
>>>
>>> I don't think anybody who tries to build GCC from source will have any
>>> problem building MPFR first.
>> They don't even need to do this, as mpfr can be built in-tree.  It then  
>> also won't interfere with a system-wide mpfr.
...
>> This is moot because for the reason given above, these hypothetical  
>> regressions are restricted to gcc if the person building gcc is careful.
> 
> "careful" = uses an undocumented trick ?
> 
> Or where at http://gcc.gnu.org/install/ is this documented?

Hm, maybe it's not.  I'm too lazy to search through all the 
documentation of the GNU build system.   While this may be written 
someplace, it would certainly be a good thing to generalize the 
paragraph about binutils in <http://gcc.gnu.org/install/download.html>.

Anyway, if you're afraid of regressions nothing prevents you from 
building another mpfr out-of-tree (which is documented), and use that, 
so the point is still moot.  If you use a static library there is no 
chance it will interfere with anything.

Greetings,
- Tobi

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version,  (includes   some fortranbits)
  2008-10-14 12:59             ` Antwort: " Markus Milleder
                                 ` (2 preceding siblings ...)
  2008-10-14 13:30               ` Antwort: Re: Antwort: " Adrian Bunk
@ 2008-10-14 22:29               ` Nils Pipenbrinck
  2008-10-14 22:31                 ` Andrew Pinski
  2008-10-15  1:09                 ` Dave Korn
  3 siblings, 2 replies; 36+ messages in thread
From: Nils Pipenbrinck @ 2008-10-14 22:29 UTC (permalink / raw)
  Cc: gcc, gcc-patches

Markus Milleder wrote:
> I don't think anybody who tries to build GCC from source will have any
> problem building MPFR first.
>   
Not entirely true:

Those of us who use cygwin and want to use the latest GCC have to first 
compile a non MPFR GCC (e.g. 4.1.x) before they can compile the latest 
GPFR  and link GCC to it.

This is not a big deal if you know that you have to do that, but if you 
don't know why the MPFR fails and wich snapshot you have to use as an 
immediate step it can be very frustrating.

I would welcome a configuration option that disables all the MPFR 
related things. That would make compiling GCC on a naked cygwin 
installation *much* easier.


Cheers,
    Nils Pipenbrinck


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-14 22:29               ` Nils Pipenbrinck
@ 2008-10-14 22:31                 ` Andrew Pinski
  2008-10-15  0:59                   ` Nils Pipenbrinck
  2008-10-15  1:09                 ` Dave Korn
  1 sibling, 1 reply; 36+ messages in thread
From: Andrew Pinski @ 2008-10-14 22:31 UTC (permalink / raw)
  To: Nils Pipenbrinck; +Cc: gcc, gcc-patches

On Tue, Oct 14, 2008 at 1:28 PM, Nils Pipenbrinck
<n.pipenbrinck@cubic.org> wrote:
> Not entirely true:
>
> Those of us who use cygwin and want to use the latest GCC have to first
> compile a non MPFR GCC (e.g. 4.1.x) before they can compile the latest GPFR
>  and link GCC to it.

I don't really see any issue here.  Because to compile GCC you need a
compiler to begin with so compiling MPFR to start is easy, now if MPFR
does not support older GCCs, we might need to rethink this.

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version,  (includes some fortranbits)
  2008-10-14 22:31                 ` Andrew Pinski
@ 2008-10-15  0:59                   ` Nils Pipenbrinck
  2008-10-15  1:01                     ` Andrew Pinski
  2008-10-15 10:56                     ` Brian Dessent
  0 siblings, 2 replies; 36+ messages in thread
From: Nils Pipenbrinck @ 2008-10-15  0:59 UTC (permalink / raw)
  Cc: gcc, gcc-patches

Andrew Pinski wrote:
> On Tue, Oct 14, 2008 at 1:28 PM, Nils Pipenbrinck
> <n.pipenbrinck@cubic.org> wrote:
>   
>> Not entirely true:
>>
>> Those of us who use cygwin and want to use the latest GCC have to first
>> compile a non MPFR GCC (e.g. 4.1.x) before they can compile the latest GPFR
>>  and link GCC to it.
>>     
>
> I don't really see any issue here.  Because to compile GCC you need a
> compiler to begin with so compiling MPFR to start is easy, now if MPFR
> does not support older GCCs, we might need to rethink this.
>   
Cygwin comes with a GCC 3.4.somewhat out of the box. To compile MPFR you 
need a 4.1 compiler.  So you have to double compiling everything. And 
worse: You have to know that you have to do this. There is no 
information about that issue.

Besides that: compiling GCC under cygwin takes *much* longer than under 
linux for example The config script alone (and there are more than one) 
need around 20 minutes.

 Nils

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version, (includes some fortranbits)
  2008-10-15  0:59                   ` Nils Pipenbrinck
@ 2008-10-15  1:01                     ` Andrew Pinski
  2008-10-15 10:56                     ` Brian Dessent
  1 sibling, 0 replies; 36+ messages in thread
From: Andrew Pinski @ 2008-10-15  1:01 UTC (permalink / raw)
  To: Nils Pipenbrinck; +Cc: gcc, gcc-patches

On Tue, Oct 14, 2008 at 2:14 PM, Nils Pipenbrinck
<n.pipenbrinck@cubic.org> wrote:
> Cygwin comes with a GCC 3.4.somewhat out of the box. To compile MPFR you
> need a 4.1 compiler.  So you have to double compiling everything. And worse:
> You have to know that you have to do this. There is no information about
> that issue.

Why does MPFR requires 4.1.1?  I have used GCC 3.3 and GCC 4.0.2 to
compile it before.

> Besides that: compiling GCC under cygwin takes *much* longer than under
> linux for example The config script alone (and there are more than one) need
> around 20 minutes.

That is a different issue, it comes down to Windows is not tuned for
launching small programs over and over again.

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version,  (includes   some fortranbits)
  2008-10-14 22:29               ` Nils Pipenbrinck
  2008-10-14 22:31                 ` Andrew Pinski
@ 2008-10-15  1:09                 ` Dave Korn
  1 sibling, 0 replies; 36+ messages in thread
From: Dave Korn @ 2008-10-15  1:09 UTC (permalink / raw)
  To: 'Nils Pipenbrinck'; +Cc: gcc, gcc-patches

Nils Pipenbrinck wrote on 14 October 2008 21:29:

> Markus Milleder wrote:
>> I don't think anybody who tries to build GCC from source will have any
>> problem building MPFR first. 
>> 
> Not entirely true:
> 
> Those of us who use cygwin and want to use the latest GCC have to first
> compile a non MPFR GCC (e.g. 4.1.x) before they can compile the latest
> GPFR  and link GCC to it.

  Err... I don't.  I build 4.3.x using 3.4.4.  That's what the whole
bootstrapping thing is about: it insulates you from your starting compiler
version.

> I would welcome a configuration option that disables all the MPFR
> related things. That would make compiling GCC on a naked cygwin
> installation *much* easier.

  Why are you even building it at all, rather than just using the standard
package in the distro?  WJFFM.

    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Antwort: Re: Antwort: Re: [PATCH]: bump minimum MPFR version,    (includes some fortranbits)
  2008-10-15  0:59                   ` Nils Pipenbrinck
  2008-10-15  1:01                     ` Andrew Pinski
@ 2008-10-15 10:56                     ` Brian Dessent
  1 sibling, 0 replies; 36+ messages in thread
From: Brian Dessent @ 2008-10-15 10:56 UTC (permalink / raw)
  To: Nils Pipenbrinck; +Cc: gcc, gcc-patches

Nils Pipenbrinck wrote:

> Cygwin comes with a GCC 3.4.somewhat out of the box. To compile MPFR you
> need a 4.1 compiler.  So you have to double compiling everything. And

I don't know where you get that assertion but it's not true.  mpfr built
with gcc 3.4 works just fine and passes all tests in its testsuite. 
Besides, Cygwin has a binary package of mpfr 2.3.1 that you can just
install, so you don't have to compile mpfr yourself at all.

Brian

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-05  5:56 [PATCH]: bump minimum MPFR version, (includes some fortran bits) Kaveh R. GHAZI
  2008-10-05 13:52 ` Richard Guenther
  2008-10-06 13:56 ` Adrian Bunk
@ 2008-10-26 12:59 ` Geoff Keating
  2008-10-26 14:42   ` Jakub Jelinek
  2008-10-27  2:50   ` Kaveh R. Ghazi
  2 siblings, 2 replies; 36+ messages in thread
From: Geoff Keating @ 2008-10-26 12:59 UTC (permalink / raw)
  To: Kaveh R. GHAZI; +Cc: gcc, gcc-patches, fortran, angela

"Kaveh R. GHAZI" <ghazi@caip.rutgers.edu> writes:

> Since we're in stage3, I'm raising the issue of the MPFR version we
> require for GCC, just as in last year's stage3 for gcc-4.3:
> http://gcc.gnu.org/ml/gcc/2007-12/msg00298.html
>
> I'd like to increase the "minimum" MPFR version to 2.3.0, (which has been
> released since Aug 2007).  The "recommended" version of MPFR can be bumped
> to the latest which is 2.3.2.

I note that the configure script, and
<http://gcc.gnu.org/install/prerequisites.html>, says

error: Building GCC requires GMP 4.1+ and MPFR 2.3.2+.

not "MPFR 2.3.0+".

I found this gave me significant trouble attempting to build GCC from
SVN sources on the regression tester, <http://glutton.geoffk.org/HEAD/>.

The regression tester is now running CentOS 5.2, basically the same as
RHEL 5.2; this is the latest available CentOS.  On that distribution,
an older version of mpfr is included with the system.  It is provided
as a static library but in the same RPM as gmp, which is a dynamic
library and used by at least gfortran (of course) and php.

There appears to be no Red Hat-based distribution that comes with
2.3.2 or later.  Even Fedora 10, which is not yet released, does not
appear to include it.

I found that simply building MPFR in a non-default location (configure
--prefix && make) and then pointing GCC at it with --with-mpfr, as in
the installation instructions, causes the bootstrap to fail when first
running xgcc, because xgcc can't find the built MPFR dynamic library.

I eventually resolved this by uninstalling php, gfortran, and gmp, and
installing gmp, gmp-devel, and mpfr packages built (by my lovely
assistant) by taking the Fedora (10, I think) packaging and upgrading
the contained upstream sources to the latest versions.

If this is what users (or even developers) of GCC are supposed to be
doing, I'd suggest more documentation on what to do and how to do it.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran  bits)
  2008-10-26 12:59 ` [PATCH]: bump minimum MPFR version, (includes some fortran bits) Geoff Keating
@ 2008-10-26 14:42   ` Jakub Jelinek
  2008-10-27  2:50   ` Kaveh R. Ghazi
  1 sibling, 0 replies; 36+ messages in thread
From: Jakub Jelinek @ 2008-10-26 14:42 UTC (permalink / raw)
  To: Geoff Keating; +Cc: Kaveh R. GHAZI, gcc, gcc-patches, fortran, angela

On Sun, Oct 26, 2008 at 12:34:37AM -0700, Geoff Keating wrote:
> "Kaveh R. GHAZI" <ghazi@caip.rutgers.edu> writes:
> There appears to be no Red Hat-based distribution that comes with
> 2.3.2 or later.  Even Fedora 10, which is not yet released, does not
> appear to include it.

FYI, Fedora 10 has 2.3.2 since Oct, 15th.

	Jakub

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-26 12:59 ` [PATCH]: bump minimum MPFR version, (includes some fortran bits) Geoff Keating
  2008-10-26 14:42   ` Jakub Jelinek
@ 2008-10-27  2:50   ` Kaveh R. Ghazi
  2008-10-27  7:03     ` David Edelsohn
  1 sibling, 1 reply; 36+ messages in thread
From: Kaveh R. Ghazi @ 2008-10-27  2:50 UTC (permalink / raw)
  To: Geoff Keating; +Cc: gcc, gcc-patches, fortran, angela

From: "Geoff Keating" <geoffk@geoffk.org>

> I found that simply building MPFR in a non-default location (configure
> --prefix && make) and then pointing GCC at it with --with-mpfr, as in
> the installation instructions, causes the bootstrap to fail when first
> running xgcc, because xgcc can't find the built MPFR dynamic library.

First I'd like to thank you for running your regression tester, and I'm
sorry this upgrade cause you so much difficulty.

The issue you describe is PR 21547.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21547

It's important IMHO to point out that this issue is not confined to MPFR.
While MPFR's more stringent version requirements expose the problem more
often, you'll find the same issue with GMP as well if you compile and
install your own copy of that library in a non-default location.

Basically, the problem is that the bootstrap process doesn't encode
the -rpath during the link process of cc1.  Doing this in a portable fashion
and resolving the PR requires linking cc1 et al. with libtool.  I don't have
any experience with libtool myself.  However since we use it elsewhere in
GCC, it may be easy to incorporate.

(Any libtool experts available to help out, or at least talk us through the 
process?)

> If this is what users (or even developers) of GCC are supposed to be
> doing, I'd suggest more documentation on what to do and how to do it.

I think the steps you (or your assistant) went through was unfortunately
unnecessarily complicated.  The solution I use is to build MPFR and/or GMP
using --disable-shared.  Then you can install them anywhere you like, pass
the location with --with-{mpfr,gmp} to GCC and since only the static library
is available everything links and runs fine.

Do you think putting this recommendation in the docs somewhere would have
been useful to you in this situation?  If so, I would be happy to prepare a
patch.

        Regards,
        --Kaveh

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-27  2:50   ` Kaveh R. Ghazi
@ 2008-10-27  7:03     ` David Edelsohn
  2008-10-27 15:03       ` Joseph S. Myers
  0 siblings, 1 reply; 36+ messages in thread
From: David Edelsohn @ 2008-10-27  7:03 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: Geoff Keating, gcc, gcc-patches, fortran, angela

On Sun, Oct 26, 2008 at 3:25 PM, Kaveh R. Ghazi <ghazi@caip.rutgers.edu> wrote:

> I think the steps you (or your assistant) went through was unfortunately
> unnecessarily complicated.  The solution I use is to build MPFR and/or GMP
> using --disable-shared.  Then you can install them anywhere you like, pass
> the location with --with-{mpfr,gmp} to GCC and since only the static library
> is available everything links and runs fine.
>
> Do you think putting this recommendation in the docs somewhere would have
> been useful to you in this situation?  If so, I would be happy to prepare a
> patch.

Graphite's CLooG and PPL libraries use libgmpxx.  Because cc1 is not linked
by g++, this effectively requires that libgmpxx must be a shared
library.  libgmp
does not have to be a shared library, but it makes things simpler.  MPFR is
a static library in my current configuration.

I configure using --with-mpfr=

David

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-27  7:03     ` David Edelsohn
@ 2008-10-27 15:03       ` Joseph S. Myers
  2008-10-27 15:14         ` Richard Guenther
  2008-10-27 16:17         ` David Edelsohn
  0 siblings, 2 replies; 36+ messages in thread
From: Joseph S. Myers @ 2008-10-27 15:03 UTC (permalink / raw)
  To: David Edelsohn
  Cc: Kaveh R. Ghazi, Geoff Keating, gcc, gcc-patches, fortran, angela,
	sebastian.pop

On Sun, 26 Oct 2008, David Edelsohn wrote:

> Graphite's CLooG and PPL libraries use libgmpxx.  Because cc1 is not linked
> by g++, this effectively requires that libgmpxx must be a shared
> library.  libgmp

I hope the Graphite people are working on fixing this for 4.4.  As I said 
in <http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00144.html> (following 
Ian's slides), libstdc++ should be statically linked into cc1 by default - 
which probably means that if static libgmpxx is available then it should 
be used.  I'm also concerned that we still don't have any documentation in 
install.texi concerning these libraries and pointing to suitable release 
tarballs of them in the infrastructure directory - we're nearly two months 
into Stage 3 and these libraries should be subject to much the same 
development stage rules as in-tree optimizers with the versions documented 
to be used and associated configure checks changing only to update to new 
bug-fix minor releases, not major feature releases, while in Stage 3.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-27 15:03       ` Joseph S. Myers
@ 2008-10-27 15:14         ` Richard Guenther
  2008-10-27 16:53           ` Joseph S. Myers
  2008-10-27 20:34           ` Roberto Bagnara
  2008-10-27 16:17         ` David Edelsohn
  1 sibling, 2 replies; 36+ messages in thread
From: Richard Guenther @ 2008-10-27 15:14 UTC (permalink / raw)
  To: Joseph S. Myers
  Cc: David Edelsohn, Kaveh R. Ghazi, Geoff Keating, gcc, gcc-patches,
	fortran, angela, sebastian.pop

On Mon, Oct 27, 2008 at 1:22 PM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> On Sun, 26 Oct 2008, David Edelsohn wrote:
>
>> Graphite's CLooG and PPL libraries use libgmpxx.  Because cc1 is not linked
>> by g++, this effectively requires that libgmpxx must be a shared
>> library.  libgmp
>
> I hope the Graphite people are working on fixing this for 4.4.  As I said
> in <http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00144.html> (following
> Ian's slides), libstdc++ should be statically linked into cc1 by default -
> which probably means that if static libgmpxx is available then it should
> be used.  I'm also concerned that we still don't have any documentation in
> install.texi concerning these libraries and pointing to suitable release
> tarballs of them in the infrastructure directory - we're nearly two months
> into Stage 3 and these libraries should be subject to much the same
> development stage rules as in-tree optimizers with the versions documented
> to be used and associated configure checks changing only to update to new
> bug-fix minor releases, not major feature releases, while in Stage 3.

I think we are still waiting for the final ppl release, but otherwise
I agree that
instructions and tarballs should be provided rather yesterday than tomorrow.
I don't necessarily agree with statically linking libstdc++ into cc1 - do you
expect problems with linking dynamically?  Static libraries for libgmpxx or
ppl or cloog are usually not available due to size and their libstdc++
requirement.

Richard.

> --
> Joseph S. Myers
> joseph@codesourcery.com
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-27 15:03       ` Joseph S. Myers
  2008-10-27 15:14         ` Richard Guenther
@ 2008-10-27 16:17         ` David Edelsohn
  1 sibling, 0 replies; 36+ messages in thread
From: David Edelsohn @ 2008-10-27 16:17 UTC (permalink / raw)
  To: Joseph S. Myers
  Cc: Kaveh R. Ghazi, Geoff Keating, gcc, gcc-patches, fortran, angela,
	sebastian.pop

On Mon, Oct 27, 2008 at 8:22 AM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> On Sun, 26 Oct 2008, David Edelsohn wrote:
>
>> Graphite's CLooG and PPL libraries use libgmpxx.  Because cc1 is not linked
>> by g++, this effectively requires that libgmpxx must be a shared
>> library.  libgmp
>
> I hope the Graphite people are working on fixing this for 4.4.  As I said
> in <http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00144.html> (following
> Ian's slides), libstdc++ should be statically linked into cc1 by default -
> which probably means that if static libgmpxx is available then it should
> be used.

I disagree; this is a very bad suggestion and will introduce more breakage.
Statically linking libstdc++ breaks some architectures.

If and when GCC itself is C++, it can be linked with libstdc++.  Until then,
there is no reason the dependencies of libraries should be propagated
to cc1 itself.

Graphite will be a technology preview in GCC 4.4, with the associated
volatility.

David

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-27 15:14         ` Richard Guenther
@ 2008-10-27 16:53           ` Joseph S. Myers
  2008-10-27 20:34           ` Roberto Bagnara
  1 sibling, 0 replies; 36+ messages in thread
From: Joseph S. Myers @ 2008-10-27 16:53 UTC (permalink / raw)
  To: Richard Guenther
  Cc: David Edelsohn, Kaveh R. Ghazi, Geoff Keating, gcc, gcc-patches,
	fortran, angela, sebastian.pop

On Mon, 27 Oct 2008, Richard Guenther wrote:

> On Mon, Oct 27, 2008 at 1:22 PM, Joseph S. Myers
> <joseph@codesourcery.com> wrote:
> > On Sun, 26 Oct 2008, David Edelsohn wrote:
> >
> >> Graphite's CLooG and PPL libraries use libgmpxx.  Because cc1 is not linked
> >> by g++, this effectively requires that libgmpxx must be a shared
> >> library.  libgmp
> >
> > I hope the Graphite people are working on fixing this for 4.4.  As I said
> > in <http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00144.html> (following
> > Ian's slides), libstdc++ should be statically linked into cc1 by default -
> > which probably means that if static libgmpxx is available then it should
> > be used.  I'm also concerned that we still don't have any documentation in
> > install.texi concerning these libraries and pointing to suitable release
> > tarballs of them in the infrastructure directory - we're nearly two months
> > into Stage 3 and these libraries should be subject to much the same
> > development stage rules as in-tree optimizers with the versions documented
> > to be used and associated configure checks changing only to update to new
> > bug-fix minor releases, not major feature releases, while in Stage 3.
> 
> I think we are still waiting for the final ppl release, but otherwise
> I agree that
> instructions and tarballs should be provided rather yesterday than tomorrow.
> I don't necessarily agree with statically linking libstdc++ into cc1 - do you
> expect problems with linking dynamically?  Static libraries for libgmpxx or
> ppl or cloog are usually not available due to size and their libstdc++
> requirement.

The first and most important step is to support linking with static 
versions of ppl, cloog, gmp, gmpxx, mpfr.  Linking with separately built 
static versions of GMP and MPFR is clearly something widely done as where 
OS versions are available at all they may often be too old and this should 
work just as well for the other libraries, and using static versions 
avoids all problems with the compiler binaries depending on shared 
libraries in nonstandard paths.

The comments above suggest this is broken for the new libraries used by 
Graphite - presumably because of not linking with -lstdc++ so it can only 
be found through shared library dependencies, though they don't specify 
this.  If that is the case then the configure support needs to know to add 
-lstdc++ when linking with these libraries using GCC.

Next is the static libstdc++ - my suggest was that *if static Cloog/PPL 
are being used* then so should static libstdc++, though this could be 
controlled with a configure option.  (One might note that the Ada 
compilers are linked with static versions of the Ada libraries by default; 
I'm sure there are cases where linking with the shared libraries would be 
safe, but the default is for the binaries not to depend on the shared 
libraries.)  Linking with static libstdc++ avoids the binaries depending 
on a shared library that again may not be a system library (especially if 
you follow the procedure some people have suggested of building cross 
compilers always with a native compiler of the same version, which may 
avoid some problems with bootstrap compiler bugs - the context in which 
it's been suggested - but would also potentially introduce dependence of 
one compiler installation on shared libraries in another).

Following that is the problem gcc-in-cxx will need to solve, of 
bootstrapping libstdc++ so each stage's compiler binaries can be linked 
with the previous stage's libstdc++ and a compiler using libstdc++.so.6 
can bootstrap one using libstdc++.so.7 (which may also require the ability 
to build PPL in-tree in order to bootstrap it across incompatible C++ 
library ABIs).  Linking the compiler binaries with static libstdc++ 
certainly simplifies some of the bootstrap issues there.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH]: bump minimum MPFR version, (includes some fortran bits)
  2008-10-27 15:14         ` Richard Guenther
  2008-10-27 16:53           ` Joseph S. Myers
@ 2008-10-27 20:34           ` Roberto Bagnara
  1 sibling, 0 replies; 36+ messages in thread
From: Roberto Bagnara @ 2008-10-27 20:34 UTC (permalink / raw)
  To: Richard Guenther
  Cc: Joseph S dot Myers, David Edelsohn, Kaveh R dot Ghazi,
	Geoff Keating, gcc, GCC Patches, fortran, angela, Pop, Sebastian,
	The Parma Polyhedra Library developers' list

Richard Guenther wrote:
> On Mon, Oct 27, 2008 at 1:22 PM, Joseph S. Myers
> <joseph@codesourcery.com> wrote:
>> On Sun, 26 Oct 2008, David Edelsohn wrote:
>>
>>> Graphite's CLooG and PPL libraries use libgmpxx.  Because cc1 is not linked
>>> by g++, this effectively requires that libgmpxx must be a shared
>>> library.  libgmp
>> I hope the Graphite people are working on fixing this for 4.4.  As I said
>> in <http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00144.html> (following
>> Ian's slides), libstdc++ should be statically linked into cc1 by default -
>> which probably means that if static libgmpxx is available then it should
>> be used.  I'm also concerned that we still don't have any documentation in
>> install.texi concerning these libraries and pointing to suitable release
>> tarballs of them in the infrastructure directory - we're nearly two months
>> into Stage 3 and these libraries should be subject to much the same
>> development stage rules as in-tree optimizers with the versions documented
>> to be used and associated configure checks changing only to update to new
>> bug-fix minor releases, not major feature releases, while in Stage 3.
> 
> I think we are still waiting for the final ppl release, but otherwise
> I agree that
> instructions and tarballs should be provided rather yesterday than tomorrow.

The first release candidate of the PPL has just been published:

     http://www.cs.unipr.it/pipermail/ppl-announce/2008/000020.html

If you want, I can draft a patch for install.texi during next weekend.
All the best,

     Roberto

-- 
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara@cs.unipr.it

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2008-10-27 19:41 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-05  5:56 [PATCH]: bump minimum MPFR version, (includes some fortran bits) Kaveh R. GHAZI
2008-10-05 13:52 ` Richard Guenther
2008-10-05 14:10   ` Gerald Pfeifer
2008-10-05 14:43     ` Richard Guenther
2008-10-05 16:34       ` Manuel López-Ibáñez
2008-10-06 23:37   ` Kaveh R. Ghazi
2008-10-07  7:55     ` Janne Blomqvist
2008-10-06 13:56 ` Adrian Bunk
2008-10-06 23:16   ` [PATCH]: bump minimum MPFR version, (includes some fortranbits) Kaveh R. Ghazi
2008-10-06 23:40     ` Ben Elliston
2008-10-07  0:35       ` Andrew Pinski
2008-10-07 18:52     ` Adrian Bunk
2008-10-13 16:00       ` Vincent Lefevre
2008-10-13 16:42         ` Antwort: " Markus Milleder
2008-10-13 17:15           ` Adrian Bunk
2008-10-14 12:59             ` Antwort: " Markus Milleder
2008-10-14 13:10               ` Jakub Jelinek
2008-10-14 13:21               ` Tobias Schlüter
2008-10-14 14:52                 ` Adrian Bunk
2008-10-14 15:39                   ` Tobias Schlüter
2008-10-14 13:30               ` Antwort: Re: Antwort: " Adrian Bunk
2008-10-14 22:29               ` Nils Pipenbrinck
2008-10-14 22:31                 ` Andrew Pinski
2008-10-15  0:59                   ` Nils Pipenbrinck
2008-10-15  1:01                     ` Andrew Pinski
2008-10-15 10:56                     ` Brian Dessent
2008-10-15  1:09                 ` Dave Korn
2008-10-26 12:59 ` [PATCH]: bump minimum MPFR version, (includes some fortran bits) Geoff Keating
2008-10-26 14:42   ` Jakub Jelinek
2008-10-27  2:50   ` Kaveh R. Ghazi
2008-10-27  7:03     ` David Edelsohn
2008-10-27 15:03       ` Joseph S. Myers
2008-10-27 15:14         ` Richard Guenther
2008-10-27 16:53           ` Joseph S. Myers
2008-10-27 20:34           ` Roberto Bagnara
2008-10-27 16:17         ` David Edelsohn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).