[PATCH v2] eal: silence -Wconstant-logical-operand in RTE_IS_POWER_OF_2
Stephen Hemminger
stephen at networkplumber.org
Tue May 19 15:49:01 CEST 2026
Newer GCC warns when a non-boolean constant is an operand of &&, which
trips whenever RTE_IS_POWER_OF_2 is used in a static_assert with a
power-of-two literal. Make the zero check explicit.
Fixes: 7c872b96983a ("hash: validate hash bucket entries while compiling")
Cc: stable at dpdk.org
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
Acked-by: Jack Bond-Preston <jack.bond-preston at foss.arm.com>
---
v2 - use suggestion to make both sides comparisons
Note: AI incorrectly complains about multiple evaluations in this macro
but that has always been the case, and has to be macro
for use with static assert.
lib/eal/include/rte_bitops.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/eal/include/rte_bitops.h b/lib/eal/include/rte_bitops.h
index aa6ac73abb..b170447714 100644
--- a/lib/eal/include/rte_bitops.h
+++ b/lib/eal/include/rte_bitops.h
@@ -1299,7 +1299,7 @@ rte_fls_u64(uint64_t x)
/**
* Macro to return 1 if n is a power of 2, 0 otherwise
*/
-#define RTE_IS_POWER_OF_2(n) ((n) && !(((n) - 1) & (n)))
+#define RTE_IS_POWER_OF_2(n) ((n) != 0 && (((n) - 1) & (n)) == 0)
/**
* Returns true if n is a power of 2
--
2.53.0
More information about the stable
mailing list