https://gcc.gnu.org/g:84bba23575590b0fcd51094af3a38dd410d0cf69

commit r17-5360-g84bba23575590b0fcd51094af3a38dd410d0cf69
Author: Tamar Christina <[email protected]>
Date:   Mon Oct 19 20:54:17 2026 +0100

    build-system: strip checking flags when compiling GMP to fix LTO bootstrap 
[PR127376]
    
    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
    
    ChangeLog:
    
            PR bootstrap/127376
            * Makefile.in: Renegerate.
            * Makefile.tpl: Strip checking flags for mpfr and gmp.

Diff:
---
 Makefile.in  | 75 +++++++++++++++++++++++++++++++-----------------------------
 Makefile.tpl | 20 +++++++++++++---
 2 files changed, 56 insertions(+), 39 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 7fd91da3f2d7..d9dfdb15874c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -698,6 +698,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)
 
@@ -13382,10 +13385,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; \
@@ -13415,11 +13418,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; \
@@ -13449,11 +13452,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; \
@@ -13483,11 +13486,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; \
@@ -13517,11 +13520,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; \
@@ -13551,11 +13554,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; \
@@ -13585,11 +13588,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; \
@@ -13619,11 +13622,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; \
@@ -13653,11 +13656,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; \
@@ -15656,10 +15659,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; \
@@ -15689,11 +15692,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; \
@@ -15723,11 +15726,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; \
@@ -15757,11 +15760,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; \
@@ -15791,11 +15794,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; \
@@ -15825,11 +15828,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; \
@@ -15859,11 +15862,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; \
@@ -15893,11 +15896,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; \
@@ -15927,11 +15930,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 360c54ae5e9c..5509c6baf7f9 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -605,6 +605,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)
 
@@ -1194,7 +1197,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
@@ -1251,7 +1265,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; \
@@ -1271,7 +1285,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