The first patch introduces a new variant of statically_true() named _statically_true() which rely on __is_constexpr() to produce a constant expression result which can be used in BUILD_BUG_ON_ZERO() and other macros which expect a constant expression as input. The second patch applies this newly created _statically_true() to GENMASK_INPUT_CHECK(). ** Changelog ** v2 -> v3: - split the single patch into a series of two patches. - add explanation of why _statically_true() is needed in addition to the existing statically_true(). Explain the pros and cons of each. - use __builtin_choose_expr() in _statically_true(). The _statically_true() of the v2 works perfectly fine when used in conjunction with BUILD_BUG_ON_ZERO() but fails if used, for example, in arrays or in static_assert(). Link: https://lore.kernel.org/all/20241111164743.339117-2-mailhol.vincent@xxxxxxxxxx/ v1 -> v2: - introduce _statically_true(), taking inspiration from statically_true() as introduced in commit 22f546873149 ("minmax: improve macro expansion and type checking"). Link: https://lore.kernel.org/all/20240609073513.256179-1-mailhol.vincent@xxxxxxxxxx/ Vincent Mailhol (2): compiler.h: add _static_assert() linux/bits.h: simplify GENMASK_INPUT_CHECK() include/linux/bits.h | 5 ++--- include/linux/compiler.h | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) -- 2.45.2