While compiling with clang 11 the callers of the __mlx5_bit_off macro warns on the cast of pointers to unsigned long which is a smaller int type in Windows. warning: cast to smaller integer type 'unsigned long' from 'u8 (*)[16]' [-Wpointer-to-int-cast] To resolve it the type is changed to size_t to be compatible for both Linux and Windows. Fixes: 865a0c15672c ("net/mlx5: add Direct Verbs prepare function") Cc: stable@dpdk.org Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com> --- drivers/common/mlx5/mlx5_prm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 8c9b53ce10..2cb3bf6005 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -601,7 +601,7 @@ typedef uint8_t u8; #define __mlx5_nullp(typ) ((struct mlx5_ifc_##typ##_bits *)0) #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld) -#define __mlx5_bit_off(typ, fld) ((unsigned int)(unsigned long) \ +#define __mlx5_bit_off(typ, fld) ((unsigned int)(size_t) \ (&(__mlx5_nullp(typ)->fld))) #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - \ (__mlx5_bit_off(typ, fld) & 0x1f)) -- 2.16.1.windows.4
On Wed, 6 Jan 2021 15:42:21 +0200, Tal Shnaiderman wrote:
> While compiling with clang 11 the callers of the
> __mlx5_bit_off macro warns on the cast of pointers to
> unsigned long which is a smaller int type in Windows.
>
> warning: cast to smaller integer type 'unsigned long'
> from 'u8 (*)[16]' [-Wpointer-to-int-cast]
>
> To resolve it the type is changed to size_t to be
> compatible for both Linux and Windows.
uintptr_t is the type for integers storing pointer values, not size_t.
> Subject: Re: [dpdk-dev] [PATCH] mlx5: fix __mlx5_bit_off macro warning for
> Windows
>
> External email: Use caution opening links or attachments
>
>
> On Wed, 6 Jan 2021 15:42:21 +0200, Tal Shnaiderman wrote:
> > While compiling with clang 11 the callers of the __mlx5_bit_off macro
> > warns on the cast of pointers to unsigned long which is a smaller int
> > type in Windows.
> >
> > warning: cast to smaller integer type 'unsigned long'
> > from 'u8 (*)[16]' [-Wpointer-to-int-cast]
> >
> > To resolve it the type is changed to size_t to be compatible for both
> > Linux and Windows.
>
> uintptr_t is the type for integers storing pointer values, not size_t.
Correct, thanks.
While compiling with clang 11 the callers of the __mlx5_bit_off macro warns on the cast of pointers to unsigned long which is a smaller int type in Windows. warning: cast to smaller integer type 'unsigned long' from 'u8 (*)[16]' [-Wpointer-to-int-cast] To resolve it the type is changed to uintptr_t to be compatible for both Linux and Windows. Fixes: 865a0c15672c ("net/mlx5: add Direct Verbs prepare function") Cc: stable@dpdk.org Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> --- v2: change type to uintptr_t [DmitryK] --- drivers/common/mlx5/mlx5_prm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 8c9b53ce10..b6a3a3cfcb 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -601,7 +601,7 @@ typedef uint8_t u8; #define __mlx5_nullp(typ) ((struct mlx5_ifc_##typ##_bits *)0) #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld) -#define __mlx5_bit_off(typ, fld) ((unsigned int)(unsigned long) \ +#define __mlx5_bit_off(typ, fld) ((unsigned int)(uintptr_t) \ (&(__mlx5_nullp(typ)->fld))) #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - \ (__mlx5_bit_off(typ, fld) & 0x1f)) -- 2.16.1.windows.4
From: Tal Shnaiderman
> While compiling with clang 11 the callers of the __mlx5_bit_off macro warns
> on the cast of pointers to unsigned long which is a smaller int type in Windows.
>
> warning: cast to smaller integer type 'unsigned long'
> from 'u8 (*)[16]' [-Wpointer-to-int-cast]
>
> To resolve it the type is changed to uintptr_t to be compatible for both Linux
> and Windows.
>
> Fixes: 865a0c15672c ("net/mlx5: add Direct Verbs prepare function")
> Cc: stable@dpdk.org
>
> Signed-off-by: Tal Shnaiderman <talshn@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
07/01/2021 13:59, Matan Azrad:
> From: Tal Shnaiderman
> > While compiling with clang 11 the callers of the __mlx5_bit_off macro warns
> > on the cast of pointers to unsigned long which is a smaller int type in Windows.
> >
> > warning: cast to smaller integer type 'unsigned long'
> > from 'u8 (*)[16]' [-Wpointer-to-int-cast]
> >
> > To resolve it the type is changed to uintptr_t to be compatible for both Linux
> > and Windows.
> >
> > Fixes: 865a0c15672c ("net/mlx5: add Direct Verbs prepare function")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Tal Shnaiderman <talshn@nvidia.com>
> Acked-by: Matan Azrad <matan@nvidia.com>
Applied to next-net-mlx, thanks.