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