Re: [PATCH v2] kbuild: move gcc's -Wconstant-logical-operand to W=2
From: Nathan Chancellor
Date: Thu Nov 05 2026 - 14:58:15 EST
On Thu, Nov 05, 2026 at 09:57:45AM -0800, Vineet Gupta wrote:
> GCC 17 adds -Wconstant-logical-operand to -Wall. It warns when an operand
> of && or || folds to a constant other than 0 or 1. Unlike clang's version,
> it also checks constant left operands and operators that come from a
> macro expansion. With CONFIG_WERROR=y, an x86 defconfig build fails in
> prepare0:
>
> arch/x86/include/asm/cpufeature.h:72:36: error: use of logical '&&' with constant operand '4194304' [-Werror=constant-logical-operand]
>
> The warning is meant to catch && written for &. Kernel history has no
> such catch. Of the 13 earlier kernel fixes for clang's version, only
> commit dd7fe5d9fd6a ("rtc: max31335: Fix comparison in
> max31335_volatile_reg()") fixed a bug that the warning found. Commit
> 394b52462020 ("drm/i915/gem: fix bitwise and logical AND mixup") fixed a
> & written for &&, which the warning cannot see. The other fixes rewrote
> correct code. In GCC's own tree, the warning found two sites since it
> was added, and both were false positives.
>
> Disable the warning for GCC unless W=2 is given. Keep clang's version,
> which skips macros and constant left operands.
>
> Suggested-by: Borislav Petkov <bp@xxxxxxxxx>
> Link: https://lore.kernel.org/all/20261104160722.1637541-1-vineet.gupta@xxxxxxxxx/
> Signed-off-by: Vineet Gupta <vineet.gupta@xxxxxxxxx>
Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx>
This probably wants a 'Cc: stable' so that older kernels can build
warning free with GCC 17.
--
Cheers,
Nathan