In function ‘xnn_u8_vclamp_ukernel__neon_u64’: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type
I'm seeing these warnings(error actually on some compiler variants) using a gcc based aarch64 toolchain with cmake:
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c: In function ‘xnn_u8_vclamp_ukernel__neon_u64’:
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:24:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
const uint8x16_t voutput_max = vld1q_dup_u8(¶ms->scalar.max);
^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:8:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
vld1q_dup_u8 (const uint8_t* __a)
^~~~~~~~~~~~
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:25:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
const uint8x16_t voutput_min = vld1q_dup_u8(¶ms->scalar.min);
^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-vclamp/u8-vclamp-neon-u64.c:8:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
vld1q_dup_u8 (const uint8_t* __a)
^~~~~~~~~~~~
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c: In function ‘xnn_u8_maxpool_minmax_ukernel_9p8x__neon_c16’:
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:31:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
const uint8x16_t voutput_max = vld1q_dup_u8(¶ms->scalar.max);
^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:11:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
vld1q_dup_u8 (const uint8_t* __a)
^~~~~~~~~~~~
/home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:32:47: warning: passing argument 1 of ‘vld1q_dup_u8’ from incompatible pointer type [-Wincompatible-pointer-types]
const uint8x16_t voutput_min = vld1q_dup_u8(¶ms->scalar.min);
^
In file included from /home/buildroot/buildroot/output/build/xnnpack-d7f398ee5e135ef4f7045802eea973cc6cb26c6c/src/u8-maxpool/u8-maxpool-9p8x-minmax-neon-c16.c:11:0:
/home/buildroot/buildroot/output/per-package/xnnpack/host/opt/ext-toolchain/lib/gcc/aarch64-linux-gnu/7.3.1/include/arm_neon.h:17429:1: note: expected ‘const uint8_t * {aka const unsigned char *}’ but argument is of type ‘const uint32_t * {aka const unsigned int *}’
vld1q_dup_u8 (const uint8_t* __a)
^~~~~~~~~~~~
Can confirm this error with GCC 14.
Can confirm this error with GCC 14.
Same
Same here. I got this error by using the x86_64 cross toolchain downloaded from arm developer. The version of gcc is: aarch64-linux-gnu-gcc (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
I work around this issue by add "-Wno-incompatible-pointer-types" to CFLAGS. https://github.com/hank7z7/XNNPACK/commit/46ce3145bd2be412956b43e4c459f578d7b11e3e
I work around this issue by add "-Wno-incompatible-pointer-types" to CFLAGS.
It is better to use -Wno-error=incompatible-pointer-types, so the warning is still shown but not treated as an error.
This is what I used when packaging torch for nixpkgs.