[PATCH v3 0/2] add _statically_true() to simplify GENMASK_INPUT_CHECK()
From: Vincent Mailhol
Date: Tue Nov 12 2024 - 09:13:21 EST
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