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 <step...@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

Reply via email to