On Tue, 26 Mar 2024, Arnd Bergmann <arnd@xxxxxxxxxx> wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > The -Woverride-init warn about code that may be intentional or not, > but the inintentional ones tend to be real bugs, so there is a bit of > disagreement on whether this warning option should be enabled by default > and we have multiple settings in scripts/Makefile.extrawarn as well as > individual subsystems. > > Older versions of clang only supported -Wno-initializer-overrides with > the same meaning as gcc's -Woverride-init, though all supported versions > now work with both. Because of this difference, an earlier cleanup of > mine accidentally turned the clang warning off for W=1 builds and only > left it on for W=2, while it's still enabled for gcc with W=1. > > There is also one driver that only turns the warning off for newer > versions of gcc but not other compilers, and some but not all the > Makefiles still use a cc-disable-warning conditional that is no > longer needed with supported compilers here. > > Address all of the above by removing the special cases for clang > and always turning the warning off unconditionally where it got > in the way, using the syntax that is supported by both compilers. > > Fixes: 2cd3271b7a31 ("kbuild: avoid duplicate warning options") > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > drivers/gpu/drm/amd/display/dc/dce110/Makefile | 2 +- > drivers/gpu/drm/amd/display/dc/dce112/Makefile | 2 +- > drivers/gpu/drm/amd/display/dc/dce120/Makefile | 2 +- > drivers/gpu/drm/amd/display/dc/dce60/Makefile | 2 +- > drivers/gpu/drm/amd/display/dc/dce80/Makefile | 2 +- > drivers/gpu/drm/i915/Makefile | 6 +++--- > drivers/gpu/drm/xe/Makefile | 4 ++-- > drivers/net/ethernet/renesas/sh_eth.c | 2 +- > drivers/pinctrl/aspeed/Makefile | 2 +- > fs/proc/Makefile | 2 +- > kernel/bpf/Makefile | 2 +- > mm/Makefile | 3 +-- > scripts/Makefile.extrawarn | 10 +++------- > 13 files changed, 18 insertions(+), 23 deletions(-) > [snip] > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile > index 3ef6ed41e62b..4c2f85632391 100644 > --- a/drivers/gpu/drm/i915/Makefile > +++ b/drivers/gpu/drm/i915/Makefile > @@ -33,9 +33,9 @@ endif > subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror > > # Fine grained warnings disable > -CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init) > -CFLAGS_display/intel_display_device.o = $(call cc-disable-warning, override-init) > -CFLAGS_display/intel_fbdev.o = $(call cc-disable-warning, override-init) > +CFLAGS_i915_pci.o = -Wno-override-init > +CFLAGS_display/intel_display_device.o = -Wno-override-init > +CFLAGS_display/intel_fbdev.o = -Wno-override-init > > # Support compiling the display code separately for both i915 and xe > # drivers. Define I915 when building i915. > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile > index 5a428ca00f10..c29a850859ad 100644 > --- a/drivers/gpu/drm/xe/Makefile > +++ b/drivers/gpu/drm/xe/Makefile > @@ -172,8 +172,8 @@ subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \ > -Ddrm_i915_gem_object=xe_bo \ > -Ddrm_i915_private=xe_device > > -CFLAGS_i915-display/intel_fbdev.o = $(call cc-disable-warning, override-init) > -CFLAGS_i915-display/intel_display_device.o = $(call cc-disable-warning, override-init) > +CFLAGS_i915-display/intel_fbdev.o = -Wno-override-init > +CFLAGS_i915-display/intel_display_device.o = -Wno-override-init For i915 and xe parts, Acked-by: Jani Nikula <jani.nikula@xxxxxxxxx> > # Rule to build SOC code shared with i915 > $(obj)/i915-soc/%.o: $(srctree)/drivers/gpu/drm/i915/soc/%.c FORCE > diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c > index 475e1e8c1d35..0786eb0da391 100644 > --- a/drivers/net/ethernet/renesas/sh_eth.c > +++ b/drivers/net/ethernet/renesas/sh_eth.c > @@ -50,7 +50,7 @@ > * the macros available to do this only define GCC 8. > */ > __diag_push(); > -__diag_ignore(GCC, 8, "-Woverride-init", > +__diag_ignore_all("-Woverride-init", > "logic to initialize all and then override some is OK"); This is nice because it's more localized than the per-file disable. However, we tried to do this in i915, but this doesn't work for GCC versions < 8, and some defconfigs enabling -Werror forced us to revert. See commit 290d16104575 ("Revert "drm/i915: use localized __diag_ignore_all() instead of per file""). BR, Jani. -- Jani Nikula, Intel