LTO bootstrap currently fails due to MPFR and GMP failing stage2 vs stage3
comparison:
mpfr/src/urandom.o differs
mpfr/src/urandomb.o differs
mpfr/src/vasprintf.o differs
mpfr/src/yn.o differs
mpfr/src/zeta.o differs
mpfr/src/zeta_ui.o differs
of pretty much every object file for mpfr and mpc.
This is because in Makefile.tpl +579 we have
STAGE1_TFLAGS += -fno-checking
STAGE2_CFLAGS += -fno-checking
STAGE2_TFLAGS += -fno-checking
STAGE3_CFLAGS += -fchecking=1
STAGE3_TFLAGS += -fchecking=1
But with a LTO bootstrap the options leak into the LTO metadata due to the
headers ending up with the checking flags inside them.
stage2-gmp/gmp.h:2334 #define __GMP_CC " ... -fno-checking"
stage3-gmp/gmp.h:2334 #define __GMP_CC " ... -fchecking=1"
during an LTO bootstrap we call compare-lto which strips the options from
.gnu.lto_.opts but they're also present in .gnu.lto_.decls.*.
So we get a miscompare due to -fchecking differences.
Since MPFR and GMP are C programs just prevent -fno-checking and -fchecking=1
from getting passed to them.
This patch adds a little autogen macro and Scheme function to strip out these
flags only for mpfr and gmp.
Bootstrapped Regtested on aarch64-none-linux-gnu,
arm-none-linux-gnueabihf, x86_64-pc-linux-gnu
-m32, -m64
with:
- default bootstrap
- profiledbootstrap
- LTO bootstrap
- LTO+O3
- bootstrap lto locality
- boostrap LTO lean
Ok for master?
Thanks,
Tamar
ChangeLog:
PR bootstrap/127376
* Makefile.in: Renegerate.
* Makefile.tpl: Strip checking flags for mpfr and gmp.
---
diff --git a/Makefile.in b/Makefile.in
index
767d6aab977aa722205275902bdef15635053f25..10adfcebaef9e03caf5f7e57b92538ed5e21e4bc
100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -700,6 +700,9 @@ STAGEautofeedback_TFLAGS = $(STAGE3_TFLAGS)
# may result in additional warnings.
STAGEautofeedback_CONFIGURE_FLAGS = $(filter-out
--enable-werror-always,$(STAGE_CONFIGURE_FLAGS))
+GMP_CHECKING_FLAGS = -fno-checking -fchecking=1
+GMP_FILTER_CHECKING_FLAGS = $(filter-out $(GMP_CHECKING_FLAGS),$(1))
+
do-compare = @do_compare@
do-compare3 = $(do-compare)
@@ -13383,10 +13386,10 @@ configure-stage1-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE1_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/gmp; \
@@ -13416,11 +13419,11 @@ configure-stage2-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE2_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/gmp; \
@@ -13450,11 +13453,11 @@ configure-stage3-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE3_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/gmp; \
@@ -13484,11 +13487,11 @@ configure-stage4-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE4_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/gmp; \
@@ -13518,11 +13521,11 @@ configure-stageprofile-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/gmp; \
@@ -13552,11 +13555,11 @@ configure-stagetrain-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage train in $(HOST_SUBDIR)/gmp; \
@@ -13586,11 +13589,11 @@ configure-stagefeedback-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/gmp; \
@@ -13620,11 +13623,11 @@ configure-stageautoprofile-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autoprofile in $(HOST_SUBDIR)/gmp; \
@@ -13654,11 +13657,11 @@ configure-stageautofeedback-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_TFLAGS))";
\
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autofeedback in $(HOST_SUBDIR)/gmp; \
@@ -15657,10 +15660,10 @@ configure-stage1-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE1_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/mpc; \
@@ -15690,11 +15693,11 @@ configure-stage2-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE2_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/mpc; \
@@ -15724,11 +15727,11 @@ configure-stage3-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE3_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/mpc; \
@@ -15758,11 +15761,11 @@ configure-stage4-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE4_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/mpc; \
@@ -15792,11 +15795,11 @@ configure-stageprofile-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/mpc; \
@@ -15826,11 +15829,11 @@ configure-stagetrain-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_CFLAGS))"; export
CFLAGS; \
CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage train in $(HOST_SUBDIR)/mpc; \
@@ -15860,11 +15863,11 @@ configure-stagefeedback-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/mpc; \
@@ -15894,11 +15897,11 @@ configure-stageautoprofile-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autoprofile in $(HOST_SUBDIR)/mpc; \
@@ -15928,11 +15931,11 @@ configure-stageautofeedback-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_TFLAGS))";
\
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_CFLAGS))";
export CFLAGS; \
CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autofeedback in $(HOST_SUBDIR)/mpc; \
diff --git a/Makefile.tpl b/Makefile.tpl
index
07b434e4343105439844e05cd7a4652a8480b373..7fa22ce10d4c7d446071a3dd1c23840793dc54b9
100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -607,6 +607,9 @@ STAGEautofeedback_TFLAGS = $(STAGE3_TFLAGS)
# may result in additional warnings.
STAGEautofeedback_CONFIGURE_FLAGS = $(filter-out
--enable-werror-always,$(STAGE_CONFIGURE_FLAGS))
+GMP_CHECKING_FLAGS = -fno-checking -fchecking=1
+GMP_FILTER_CHECKING_FLAGS = $(filter-out $(GMP_CHECKING_FLAGS),$(1))
+
do-compare = @do_compare@
do-compare3 = $(do-compare)
@@ -1196,7 +1199,18 @@ TAGS: do-TAGS
# Macros for configure and all targets
# ------------------------------------
-[+ DEFINE configure +]
+[+ ;; Return the stage flag variable that should be used when configuring
+ ;; the current module.
+ ;; GMP and MPC record the compiler options in object files, which makes
+ ;; LTO bootstrap comparisons fail if stage-specific checking flags differ.
+ (define stage-configure-flags
+ (lambda (suffix)
+ (let ((flag (string-append "STAGE" (get "id") suffix)))
+ (if (or (= (get "module") "gmp")
+ (= (get "module") "mpc"))
+ (string-append "$(call GMP_FILTER_CHECKING_FLAGS,$(" flag "))")
+ (string-append "$(" flag ")")))))
++][+ DEFINE configure +]
.PHONY: configure-[+prefix+][+module+] maybe-configure-[+prefix+][+module+]
maybe-configure-[+prefix+][+module+]:
@if gcc-bootstrap
@@ -1253,7 +1267,7 @@ configure-stage[+id+]-[+prefix+][+module+]:
@$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+]
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE[+id+]_TFLAGS)"; \
+ TFLAGS="[+ (stage-configure-flags "_TFLAGS") +]"; \
[+ IF check_multilibs
+]echo "Checking multilib configuration for [+module+]..."; \
$(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp
2> /dev/null; \
@@ -1273,7 +1287,7 @@ configure-stage[+id+]-[+prefix+][+module+]:
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +]
\
- CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \
+ CFLAGS="[+ (stage-configure-flags "_CFLAGS") +]"; export CFLAGS; \
CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"; export CXXFLAGS;[+ IF (= (get
"module") "gcc") +] \
GDCFLAGS="$(STAGE[+id+]_GDCFLAGS)"; export GDCFLAGS;[+ ENDIF +][+ IF
prev +] \
LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
--
diff --git a/Makefile.in b/Makefile.in
index 767d6aab977aa722205275902bdef15635053f25..10adfcebaef9e03caf5f7e57b92538ed5e21e4bc 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -700,6 +700,9 @@ STAGEautofeedback_TFLAGS = $(STAGE3_TFLAGS)
# may result in additional warnings.
STAGEautofeedback_CONFIGURE_FLAGS = $(filter-out --enable-werror-always,$(STAGE_CONFIGURE_FLAGS))
+GMP_CHECKING_FLAGS = -fno-checking -fchecking=1
+GMP_FILTER_CHECKING_FLAGS = $(filter-out $(GMP_CHECKING_FLAGS),$(1))
+
do-compare = @do_compare@
do-compare3 = $(do-compare)
@@ -13383,10 +13386,10 @@ configure-stage1-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE1_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
- CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/gmp; \
@@ -13416,11 +13419,11 @@ configure-stage2-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE2_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/gmp; \
@@ -13450,11 +13453,11 @@ configure-stage3-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE3_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/gmp; \
@@ -13484,11 +13487,11 @@ configure-stage4-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE4_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/gmp; \
@@ -13518,11 +13521,11 @@ configure-stageprofile-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/gmp; \
@@ -13552,11 +13555,11 @@ configure-stagetrain-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage train in $(HOST_SUBDIR)/gmp; \
@@ -13586,11 +13589,11 @@ configure-stagefeedback-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/gmp; \
@@ -13620,11 +13623,11 @@ configure-stageautoprofile-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autoprofile in $(HOST_SUBDIR)/gmp; \
@@ -13654,11 +13657,11 @@ configure-stageautofeedback-gmp:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autofeedback in $(HOST_SUBDIR)/gmp; \
@@ -15657,10 +15660,10 @@ configure-stage1-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE1_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
- CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE1_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 1 in $(HOST_SUBDIR)/mpc; \
@@ -15690,11 +15693,11 @@ configure-stage2-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE2_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE2_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 2 in $(HOST_SUBDIR)/mpc; \
@@ -15724,11 +15727,11 @@ configure-stage3-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE3_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE3_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 3 in $(HOST_SUBDIR)/mpc; \
@@ -15758,11 +15761,11 @@ configure-stage4-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE4_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGE4_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage 4 in $(HOST_SUBDIR)/mpc; \
@@ -15792,11 +15795,11 @@ configure-stageprofile-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEprofile_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage profile in $(HOST_SUBDIR)/mpc; \
@@ -15826,11 +15829,11 @@ configure-stagetrain-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEtrain_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage train in $(HOST_SUBDIR)/mpc; \
@@ -15860,11 +15863,11 @@ configure-stagefeedback-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEfeedback_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage feedback in $(HOST_SUBDIR)/mpc; \
@@ -15894,11 +15897,11 @@ configure-stageautoprofile-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautoprofile_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autoprofile in $(HOST_SUBDIR)/mpc; \
@@ -15928,11 +15931,11 @@ configure-stageautofeedback-mpc:
@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ TFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_TFLAGS))"; \
test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \
$(HOST_EXPORTS) \
$(POSTSTAGE1_HOST_EXPORTS) \
- CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
+ CFLAGS="$(call GMP_FILTER_CHECKING_FLAGS,$(STAGEautofeedback_CFLAGS))"; export CFLAGS; \
CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS; \
echo Configuring stage autofeedback in $(HOST_SUBDIR)/mpc; \
diff --git a/Makefile.tpl b/Makefile.tpl
index 07b434e4343105439844e05cd7a4652a8480b373..7fa22ce10d4c7d446071a3dd1c23840793dc54b9 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -607,6 +607,9 @@ STAGEautofeedback_TFLAGS = $(STAGE3_TFLAGS)
# may result in additional warnings.
STAGEautofeedback_CONFIGURE_FLAGS = $(filter-out --enable-werror-always,$(STAGE_CONFIGURE_FLAGS))
+GMP_CHECKING_FLAGS = -fno-checking -fchecking=1
+GMP_FILTER_CHECKING_FLAGS = $(filter-out $(GMP_CHECKING_FLAGS),$(1))
+
do-compare = @do_compare@
do-compare3 = $(do-compare)
@@ -1196,7 +1199,18 @@ TAGS: do-TAGS
# Macros for configure and all targets
# ------------------------------------
-[+ DEFINE configure +]
+[+ ;; Return the stage flag variable that should be used when configuring
+ ;; the current module.
+ ;; GMP and MPC record the compiler options in object files, which makes
+ ;; LTO bootstrap comparisons fail if stage-specific checking flags differ.
+ (define stage-configure-flags
+ (lambda (suffix)
+ (let ((flag (string-append "STAGE" (get "id") suffix)))
+ (if (or (= (get "module") "gmp")
+ (= (get "module") "mpc"))
+ (string-append "$(call GMP_FILTER_CHECKING_FLAGS,$(" flag "))")
+ (string-append "$(" flag ")")))))
++][+ DEFINE configure +]
.PHONY: configure-[+prefix+][+module+] maybe-configure-[+prefix+][+module+]
maybe-configure-[+prefix+][+module+]:
@if gcc-bootstrap
@@ -1253,7 +1267,7 @@ configure-stage[+id+]-[+prefix+][+module+]:
@$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+]
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- TFLAGS="$(STAGE[+id+]_TFLAGS)"; \
+ TFLAGS="[+ (stage-configure-flags "_TFLAGS") +]"; \
[+ IF check_multilibs
+]echo "Checking multilib configuration for [+module+]..."; \
$(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null; \
@@ -1273,7 +1287,7 @@ configure-stage[+id+]-[+prefix+][+module+]:
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +] \
- CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \
+ CFLAGS="[+ (stage-configure-flags "_CFLAGS") +]"; export CFLAGS; \
CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"; export CXXFLAGS;[+ IF (= (get "module") "gcc") +] \
GDCFLAGS="$(STAGE[+id+]_GDCFLAGS)"; export GDCFLAGS;[+ ENDIF +][+ IF prev +] \
LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \