The first patch introduces a new variant of statically_true() named const_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 const_true() to GENMASK_INPUT_CHECK(). --- ** Changelog ** v3 -> v4: - rename _statically_true() into const_true(). - fix incorrect subject in the first patch. - s/Declare/Define in first patch description: macro are defined, not declared. - move the godbolt link with the tautology folding examples as a footnote into the patch description (was after the --- scissors in v3). - add more examples of tautologically true expressions in the first patch description. - Rewrite the paragraph in the macro comment which compares statically_true() with const_true() and add code examples directly into that comment. Link: https://lore.kernel.org/all/20241112190840.601378-4-mailhol.vincent@xxxxxxxxxx/ v3 -> v3 RESEND: - send email using the smtp.wanadoo.fr gateway. Note that this may appear as smtp.orange.fr which is an alias (both have the same IP). Link: https://lore.kernel.org/all/20241112140454.518823-4-mailhol.vincent@xxxxxxxxxx/ 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 const_true() linux/bits.h: simplify GENMASK_INPUT_CHECK() include/linux/bits.h | 5 ++--- include/linux/compiler.h | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) -- 2.45.2