[PATCH v4 0/2] add const_true() to simplify GENMASK_INPUT_CHECK()

From: Vincent Mailhol
Date: Wed Nov 13 2024 - 12:30:32 EST


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