Description
When building on an Ubunu 20 ARM machine, it now uses GCC 9.4, which includes a definition of vld1q_u8_x4. The build fails with messages like this:
20:28:53 In file included from /home/ubuntu/kudu/src/kudu/util/group_varint-inl.h:25, 20:28:53 from /home/ubuntu/kudu/src/kudu/util/group_varint.cc:18: 20:28:53 /home/ubuntu/kudu/src/kudu/util/sse2neon.h:184:27: error: ‘uint8x16x4_t vld1q_u8_x4(const uint8_t*)’ redeclared inline without ‘gnu_inline’ attribute 20:28:53 184 | FORCE_INLINE uint8x16x4_t vld1q_u8_x4(const uint8_t *p) { 20:28:53 | ^~~~~~~~~~~ 20:28:53 In file included from /home/ubuntu/kudu/src/kudu/util/sse2neon.h:66, 20:28:53 from /home/ubuntu/kudu/src/kudu/util/group_varint-inl.h:25, 20:28:53 from /home/ubuntu/kudu/src/kudu/util/group_varint.cc:18: 20:28:53 /usr/lib/gcc/aarch64-linux-gnu/9/include/arm_neon.h:18122:1: note: ‘uint8x16x4_t vld1q_u8_x4(const uint8_t*)’ previously defined here 20:28:53 18122 | vld1q_u8_x4 (const uint8_t *__a) 20:28:53 | ^~~~~~~~~~~
There have been major changes in the logic of sse2neon.h over the past couple years. The code uses a different name to avoid collisions and it has more sophisticated version checks.
See these commits: https://github.com/DLTcollab/sse2neon/commit/e96c9818e25f019629a6b96f62382d42179eab3c
https://github.com/DLTcollab/sse2neon/commit/26011f2ca7f22fd2b93b85fa84a2465ffc489710
One possible fix is to update sse2neon to a more recent version.
Attachments
Issue Links
- relates to
-
KUDU-3225 'vld1q_u8_x4' was not declared in arm64 which gcc version is larger than 9.2
- Resolved