This series is the spiritual successor of [1] which introduced const_true(). In [1], following a comment from David Laight, Linus came with a suggestion to simplify __is_constexpr() and its derived macros using a _Generic() selection. Because of the total change of scope, I am starting a new series. The goal is to introduce a set of three macros: - is_const(): a one to one replacement of __is_constexpr() in term of features but written in a less hacky way thanks to _Generic(). - is_const_true(): tells whether or not the argument is a true integer constant expression. - is_const_false(): tells whether or not the argument is a false integer constant expression. Once defined, apply them tree-wide. All those three macros will rely on a single building block: __is_const_zero(). Patch 1 adds statically_false(). This is just done so that at the end of this series, the full set of statically_true/false() and is_const_true/false() is present. Patch 2 adds __is_const_zero() and is_const(). Patch 3 adds is_const_true() and is_const_false(). Patch 4 to 9 do a tree-wide replacement to remove all the usages of __is_constexpr() and replace them by is_const_true() or is_const_false() whenever feasible, or by is_const() otherwise. Patch 10 finally remove __is_constexpr(). RIP! [1] add const_true() to simplify GENMASK_INPUT_CHECK() Link: https://lore.kernel.org/all/20241113172939.747686-4-mailhol.vincent@xxxxxxxxxx/ Signed-off-by: Vincent Mailhol <mailhol.vincent@xxxxxxxxxx> --- Vincent Mailhol (10): compiler.h: add statically_false() compiler.h: add is_const() as a replacement of __is_constexpr() compiler.h: add is_const_true() and is_const_false() linux/bits.h: simplify GENMASK_INPUT_CHECK() by using is_const_true() minmax: simplify __clamp_once() by using is_const_false() fortify: replace __is_constexpr() by is_const() in strlen() overflow: replace __is_constexpr() by is_const() drm/i915/reg: replace __is_const_expr() by is_const_true() or is_const() coresight: etm4x: replace __is_const_expr() by is_const() compiler.h: remove __is_constexpr() drivers/gpu/drm/i915/i915_reg_defs.h | 47 +++++------ drivers/hwtracing/coresight/coresight-etm4x.h | 2 +- include/linux/bits.h | 5 +- include/linux/compiler.h | 112 +++++++++++++++----------- include/linux/fortify-string.h | 4 +- include/linux/minmax.h | 3 +- include/linux/overflow.h | 8 +- 7 files changed, 97 insertions(+), 84 deletions(-) --- base-commit: e70140ba0d2b1a30467d4af6bcfe761327b9ec95 change-id: 20241129-is_constexpr-refactor-19460adedc48 Best regards, -- Vincent Mailhol <mailhol.vincent@xxxxxxxxxx>