[PATCH] eal: force evaluation of RTE_ASSERT expression

Stephen Hemminger stephen at networkplumber.org
Tue Feb 4 17:55:16 CET 2025


Even if RTE_ENABLE_ASSERT is not enabled, the expression used should
still be evaluated to check for compiler warnings. Use sizeof
and ternary operator in same manner as the assert() macro to
cause the expression to be evaluated but not generate code.

Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
 lib/eal/include/rte_debug.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/eal/include/rte_debug.h b/lib/eal/include/rte_debug.h
index 74593cd4d4..357dbb09ec 100644
--- a/lib/eal/include/rte_debug.h
+++ b/lib/eal/include/rte_debug.h
@@ -43,11 +43,17 @@ void rte_dump_stack(void);
 #define rte_panic(...) rte_panic_(__func__, __VA_ARGS__, "dummy")
 #define rte_panic_(func, format, ...) __rte_panic(func, format "%.0s", __VA_ARGS__)
 
+/* RTE_ASSERT is optional checks that only get evaluted if RTE_ENABLE_ASSERT is enabled. */
 #ifdef RTE_ENABLE_ASSERT
 #define RTE_ASSERT(exp)	RTE_VERIFY(exp)
 #else
-#define RTE_ASSERT(exp) do {} while (0)
+#define RTE_ASSERT(exp)					\
+	/* Evaluate expression to trigger warnings */	\
+	do {						\
+		(void)sizeof((exp) ? 1 : 0);		\
+	} while (0)
 #endif
+
 #define	RTE_VERIFY(exp)	do {                                                  \
 	if (unlikely(!(exp)))                                                           \
 		rte_panic("line %d\tassert \"%s\" failed\n", __LINE__, #exp); \
-- 
2.47.2



More information about the dev mailing list