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 +] \

Reply via email to