> From: Ferruh Yigit [mailto:ferruh.yi...@amd.com]
> Sent: Monday, 13 November 2023 19.14
> 
> On 11/13/2023 5:06 PM, Stephen Hemminger wrote:
> > This series fixes a couple places where expressions that could not
> > be evaluated as constant early in compiler passes were used. And then
> > converts RTE_BUILD_BUG_ON() with static_assert.
> >
> 
> Acked-by: Ferruh Yigit <ferruh.yi...@amd.com>
> 
> 
> I am getting more build errors [1], [2].
> 

[...]

> [2] `CC=clang meson --buildtype=debugoptimized build`
> 
> ../lib/mempool/rte_mempool.c:749:2: error: static_assert expression is
> not an integral constant expression
> 
> RTE_BUILD_BUG_ON(CALC_CACHE_FLUSHTHRESH(RTE_MEMPOOL_CACHE_MAX_SIZE) >
> 
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../lib/eal/include/rte_common.h:499:51: note: expanded from macro
> 'RTE_BUILD_BUG_ON'
> #define RTE_BUILD_BUG_ON(condition) static_assert(!(condition),
> #condition)
>                                                   ^~~~~~~~~~~~
> 1 error generated.

Perhaps you can fix it in rte_mempool.c... the CACHE_FLUSHTHRESH_MULTIPLIER 
constant seems to be only used for the CALC_CACHE_FLUSHTHRESH() macro, so fix 
it like this:

-#define CACHE_FLUSHTHRESH_MULTIPLIER 1.5
-#define CALC_CACHE_FLUSHTHRESH(c)      \
-       ((typeof(c))((c) * CACHE_FLUSHTHRESH_MULTIPLIER))
+/* Cache flush threshold multiplier is 1.5 = 3/2. */
+#define CALC_CACHE_FLUSHTHRESH(c) (c * 3 / 2)


Reply via email to