Re: [PATCH] kbuild: move -Wunused-const-variable to W=1 warning level

Lee Jones
2016-05-11T07:48:18Z

On Tue, 10 May 2016, Arnd Bergmann wrote:

> gcc-6 started warning by default about variables that are not
> used anywhere and that are marked 'const', generating many
> false positives in an allmodconfig build, e.g.:
>
> arch/arm/mach-davinci/board-da830-evm.c:282:20: warning: 'da830_evm_emif25_pins' defined but not used [-Wunused-const-variable=]
> arch/arm/plat-omap/dmtimer.c:958:34: warning: 'omap_timer_match' defined but not used [-Wunused-const-variable=]
> drivers/bluetooth/hci_bcm.c:625:39: warning: 'acpi_bcm_default_gpios' defined but not used [-Wunused-const-variable=]
> drivers/char/hw_random/omap-rng.c:92:18: warning: 'reg_map_omap4' defined but not used [-Wunused-const-variable=]
> drivers/devfreq/exynos/exynos5_bus.c:381:32: warning: 'exynos5_busfreq_int_pm' defined but not used [-Wunused-const-variable=]
> drivers/dma/mv_xor.c:1139:34: warning: 'mv_xor_dt_ids' defined but not used [-Wunused-const-variable=]
>
> This is similar to the existing -Wunused-but-set-variable warning
> that was added in an earlier release and that we disable by default
> now and only enable when W=1 is set, so it makes sense to do
> the same here. Once we have eliminated the majority of the
> warnings for both, we can put them back into the default list.
>
> We probably want this in backport kernels as well, to allow building
> them with gcc-6 without introducing extra warnings.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Cc: stable@vger.kernel.org
> ---
> I had originally started testing with gcc-6 a while ago and turned off
> this option in my build scripts because it was too noisy. I fixed all
> the other warnings I got and forgot about it until Olof mentioned it
> when he upgraded his build bot and the warnings started exploding.
>
> Makefile | 5 +++--
> scripts/Makefile.extrawarn | 1 +
> 2 files changed, 4 insertions(+), 2 deletions(-)

Works for me:
Acked-by: Lee Jones <lee.jones@linaro.org>

OOI, we described W=1 as "warnings that we'd like to see fixed
shortly, in order to obtain a clean W=1 build". By demoting
'sign-compare' to W=2 we reduced warnings from 25k to 3k, which is a
more achievable target. How does this change effect the W=1 warning
count? Does it place a clean W=1 build back out of the realms of
possibility?

> diff --git a/Makefile b/Makefile
> index f7ccd8a40450..7934088c011b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -708,9 +708,10 @@ KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
> KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
> else
>
> -# This warning generated too much noise in a regular build.
> -# Use make W=1 to enable this warning (see scripts/Makefile.build)
> +# These warnings generated too much noise in a regular build.
> +# Use make W=1 to enable them (see scripts/Makefile.build)
> KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
> +KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
> endif
>
> ifdef CONFIG_FRAME_POINTER
> diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
> index f9e47a70509c..53449a6ff6aa 100644
> --- a/scripts/Makefile.extrawarn
> +++ b/scripts/Makefile.extrawarn
> @@ -24,6 +24,7 @@ warning-1 += $(call cc-option, -Wmissing-prototypes)
> warning-1 += -Wold-style-definition
> warning-1 += $(call cc-option, -Wmissing-include-dirs)
> warning-1 += $(call cc-option, -Wunused-but-set-variable)
> +warning-1 += $(call cc-option, -Wunused-const-variable)
> warning-1 += $(call cc-disable-warning, missing-field-initializers)
> warning-1 += $(call cc-disable-warning, sign-compare)
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog