Add -Werror=lto-type-mismatch,odr to bootstrap-lto* configurations to
help stop LTO breakage/correctness issues sneaking in.
We discussed -Werror=strict-aliasing but it runs early and doesn't
give better diagnostics with LTO so left it out.
config/ChangeLog:
PR rust/108087
PR ada/115917
PR modula2/114529
PR modula2/116181
PR other/116182
* bootstrap-lto-lean.mk: Pass -Werror=lto-type-mismatch,odr.
* bootstrap-lto-noplugin.mk: Ditto.
* bootstrap-lto.mk: Ditto.
---
OK once PR117038 is fixed? (It snuck in yesterday).
Bootstrapped all languages on x86_64-pc-linux-gnu.
config/bootstrap-lto-lean.mk | 8 +++++---
config/bootstrap-lto-noplugin.mk | 10 +++++-----
config/bootstrap-lto.mk | 10 +++++-----
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/config/bootstrap-lto-lean.mk b/config/bootstrap-lto-lean.mk
index 42cb3394c70b..f176390ba21a 100644
--- a/config/bootstrap-lto-lean.mk
+++ b/config/bootstrap-lto-lean.mk
@@ -1,10 +1,12 @@
# This option enables LTO for stage4 and LTO for generators in stage3 with
profiledbootstrap.
# Otherwise, LTO is used in only stage3.
-STAGE3_CFLAGS += -flto=jobserver
+
+STAGE2_CFLAGS += -flto=jobserver -Werror=lto-type-mismatch -Werror=odr
+STAGE3_CFLAGS += -flto=jobserver -Werror=lto-type-mismatch -Werror=odr
override STAGEtrain_CFLAGS := $(filter-out
-flto=jobserver,$(STAGEtrain_CFLAGS))
-STAGEtrain_GENERATOR_CFLAGS += -flto=jobserver
-STAGEfeedback_CFLAGS += -flto=jobserver
+STAGEtrain_GENERATOR_CFLAGS += -flto=jobserver -Werror=lto-type-mismatch
-Werror=odr
+STAGEfeedback_CFLAGS += -flto=jobserver -Werror=lto-type-mismatch -Werror=odr
# assumes the host supports the linker plugin
LTO_AR = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ar$(exeext)
-B$$r/$(HOST_SUBDIR)/prev-gcc/
diff --git a/config/bootstrap-lto-noplugin.mk b/config/bootstrap-lto-noplugin.mk
index 0f50708e49d1..660ca60dbd3d 100644
--- a/config/bootstrap-lto-noplugin.mk
+++ b/config/bootstrap-lto-noplugin.mk
@@ -1,9 +1,9 @@
# This option enables LTO for stage2 and stage3 on
# hosts without linker plugin support.
-STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
-STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
-STAGEprofile_CFLAGS += -flto=jobserver -frandom-seed=1
-STAGEtrain_CFLAGS += -flto=jobserver -frandom-seed=1
-STAGEfeedback_CFLAGS += -flto=jobserver -frandom-seed=1
+STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
-Werror=lto-type-mismatch -Werror=odr
+STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
-Werror=lto-type-mismatch -Werror=odr
+STAGEprofile_CFLAGS += -flto=jobserver -frandom-seed=1
-Werror=lto-type-mismatch -Werror=odr
+STAGEtrain_CFLAGS += -flto=jobserver -frandom-seed=1 -Werror=lto-type-mismatch
-Werror=odr
+STAGEfeedback_CFLAGS += -flto=jobserver -frandom-seed=1
-Werror=lto-type-mismatch -Werror=odr
do-compare = /bin/true
diff --git a/config/bootstrap-lto.mk b/config/bootstrap-lto.mk
index 1ddb1d870bab..9f76c03f8a68 100644
--- a/config/bootstrap-lto.mk
+++ b/config/bootstrap-lto.mk
@@ -1,10 +1,10 @@
# This option enables LTO for stage2 and stage3 in slim mode
-STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1
-STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1
-STAGEprofile_CFLAGS += -flto=jobserver -frandom-seed=1
-STAGEtrain_CFLAGS += -flto=jobserver -frandom-seed=1
-STAGEfeedback_CFLAGS += -flto=jobserver -frandom-seed=1
+STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -Werror=lto-type-mismatch
-Werror=odr
+STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -Werror=lto-type-mismatch
-Werror=odr
+STAGEprofile_CFLAGS += -flto=jobserver -frandom-seed=1
-Werror=lto-type-mismatch -Werror=odr
+STAGEtrain_CFLAGS += -flto=jobserver -frandom-seed=1 -Werror=lto-type-mismatch
-Werror=odr
+STAGEfeedback_CFLAGS += -flto=jobserver -frandom-seed=1
-Werror=lto-type-mismatch -Werror=odr
# assumes the host supports the linker plugin
LTO_AR = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ar$(exeext)
-B$$r/$(HOST_SUBDIR)/prev-gcc/
base-commit: 9df0772d50d8f8a75389d319949632e5d111cc6c
--
2.47.0