On Thu, 16 Aug 2012, Diego Novillo wrote: > Richi, this implements your idea for fixing PR 54281. I don't > have an old enough compiler. Could you please test it in your > system? > > I debated whether to remove the GENERATOR_FILE predicate from the > inclusion (some files include gmp.h unconditionally). I think it > could be removed, but only a minority of files build with > GENERATOR_FILE set, so it didn't seem harmful. > > OK if tests pass?
It fixes it. Thus, ok from my side (if your testing succeeds). Thanks, Richard. > > Diego. > > > 2012-08-16 Diego Novillo <dnovi...@google.com> > Richard Guenther <rguent...@suse.de> > > PR bootstrap/54281 > * double-int.h: Move including of gmp.h ... > * system.h: ... here. > * realmpfr.h: Do not include gmp.h. > * tree-ssa-loop-niter.c: Do not include gmp.h. > > fortran/ChangeLog > * gfortran.h: Do not include gmp.h. > > diff --git a/gcc/double-int.h b/gcc/double-int.h > index 3d9aa2c..7ea0528 100644 > --- a/gcc/double-int.h > +++ b/gcc/double-int.h > @@ -20,10 +20,6 @@ along with GCC; see the file COPYING3. If not see > #ifndef DOUBLE_INT_H > #define DOUBLE_INT_H > > -#ifndef GENERATOR_FILE > -#include <gmp.h> > -#endif > - > /* A large integer is currently represented as a pair of HOST_WIDE_INTs. > It therefore represents a number with precision of > 2 * HOST_BITS_PER_WIDE_INT bits (it is however possible that the > diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h > index 7c4c0a4..611d16d 100644 > --- a/gcc/fortran/gfortran.h > +++ b/gcc/fortran/gfortran.h > @@ -1681,7 +1681,6 @@ gfc_intrinsic_sym; > EXPR_COMPCALL Function (or subroutine) call of a procedure pointer > component or type-bound procedure. */ > > -#include <gmp.h> > #include <mpfr.h> > #include <mpc.h> > #define GFC_RND_MODE GMP_RNDN > diff --git a/gcc/realmpfr.h b/gcc/realmpfr.h > index ab234e9..ada876e 100644 > --- a/gcc/realmpfr.h > +++ b/gcc/realmpfr.h > @@ -22,7 +22,10 @@ > #ifndef GCC_REALGMP_H > #define GCC_REALGMP_H > > -#include <gmp.h> > +/* Note that we do not include gmp.h. It is included in system.h > + because it wrecks intl.h when compiling in C++ mode. > + See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54281 for details. */ > + > #include <mpfr.h> > #include <mpc.h> > #include "real.h" > diff --git a/gcc/system.h b/gcc/system.h > index 9e7d503..0ccd991 100644 > --- a/gcc/system.h > +++ b/gcc/system.h > @@ -1037,4 +1037,8 @@ helper_const_non_const_cast (const char *p) > #define DEBUG_VARIABLE > #endif > > +#ifndef GENERATOR_FILE > +#include <gmp.h> > +#endif > + > #endif /* ! GCC_SYSTEM_H */ > diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c > index c719a74..4c67c26 100644 > --- a/gcc/tree-ssa-loop-niter.c > +++ b/gcc/tree-ssa-loop-niter.c > @@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see > #include "flags.h" > #include "diagnostic-core.h" > #include "tree-inline.h" > -#include "gmp.h" > > #define SWAP(X, Y) do { affine_iv *tmp = (X); (X) = (Y); (Y) = tmp; } while > (0) > > > -- Richard Guenther <rguent...@suse.de> SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend