Re: [PATCH v1 1/1] compiler_types: Warn about unused static inline functions on second

From: Nathan Chancellor

Date: Thu Nov 06 2025 - 10:16:54 EST


On Thu, Nov 06, 2025 at 11:50:00AM +0100, Andy Shevchenko wrote:
> From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>
> Per Nathan, clang catches unused "static inline" functions in C files since
> commit 6863f5643dd7 ("kbuild: allow Clang to find unused static inline
> functions for W=1 build").
>
> Linus said:
>
> > So I entirely ignore W=1 issues, because I think so many of the extra
> > warnings are bogus.
> >
> > But if this one in particular is causing more problems than most -
> > some teams do seem to use W=1 as part of their test builds - it's fine
> > to send me a patch that just moves bad warnings to W=2.
> >
> > And if anybody uses W=2 for their test builds, that's THEIR problem..
>
> Here is the change to bump the warning from W=1 to W=2.
>
> Fixes: 6863f5643dd7 ("kbuild: allow Clang to find unused static inline functions for W=1 build")
> Signed-off-by: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

I can take this as a fix via kbuild or Linus can apply it directly
but...

> ---
> include/linux/compiler_types.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
> index 59288a2c1ad2..575a03643fa1 100644
> --- a/include/linux/compiler_types.h
> +++ b/include/linux/compiler_types.h
> @@ -253,7 +253,7 @@ struct ftrace_likely_data {
> * for W=1 build. This will allow clang to find unused functions. Remove the
> * __inline_maybe_unused entirely after fixing most of -Wunused-function warnings.
> */

The comment should be updated to W=2 instead of W=1 and we should
probably drop the sentence about removing __inline_maybe_unused entirely
since people such as Peter will never want this behavior by default. I
do not mind doing it myself if I take it.

> -#ifdef KBUILD_EXTRA_WARN1
> +#ifdef KBUILD_EXTRA_WARN2
> #define __inline_maybe_unused
> #else
> #define __inline_maybe_unused __maybe_unused
> --
> 2.50.1
>