Message ID | 185b07e7f79c7519b89c0bfd3df8097582cf0c2c.1728463202.git.sam@gentoo.org |
---|---|
State | New |
Headers | show |
Series | config: add -Werror=lto-type-mismatch,odr to bootstrap-lto* | expand |
Sam James <sam@gentoo.org> writes: > 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). ... which is now fixed. > > 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
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/