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? 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)