diff mbox series

config: add -Werror=lto-type-mismatch,odr to bootstrap-lto*

Message ID 185b07e7f79c7519b89c0bfd3df8097582cf0c2c.1728463202.git.sam@gentoo.org
State New
Headers show
Series config: add -Werror=lto-type-mismatch,odr to bootstrap-lto* | expand

Commit Message

Sam James Oct. 9, 2024, 8:40 a.m. UTC
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(-)


base-commit: 9df0772d50d8f8a75389d319949632e5d111cc6c

Comments

Sam James Oct. 16, 2024, 5:10 a.m. UTC | #1
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 mbox series

Patch

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/