[PATCH] eal: silence -Wconstant-logical-operand in RTE_IS_POWER_OF_2

Jack Bond-Preston jack.bond-preston at foss.arm.com
Tue May 19 11:26:11 CEST 2026


On 18/05/2026 17:33, Stephen Hemminger wrote:
> 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>
> ---
>   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..d2719ecd5e 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)))
>   
>   /**
>    * Returns true if n is a power of 2

Acked-by: Jack Bond-Preston <jack.bond-preston at foss.arm.com>


More information about the stable mailing list