ITK: Build on aarch64 fails with NEON error

Description

Since version 5, the build on aarch64 fails with NEON errors. 4.13 was ok.

Steps to Reproduce

Try to build ITK on aarch64 and check the errors:

[ 1621s] cd /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/Modules/ITKFFT && /usr/bin/castxml -o /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /usr/bin/c++ -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel -std=c++11 ")" -w -c @/home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/ITKFFT.castxml.inc /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx:11:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:38:9: error: unknown type name '__Int8x8_t'
[ 1621s] typedef __Int8x8_t int8x8_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:39:9: error: unknown type name '__Int16x4_t'
[ 1621s] typedef __Int16x4_t int16x4_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:40:9: error: unknown type name '__Int32x2_t'; did you mean '__int32_t'?
[ 1621s] typedef __Int32x2_t int32x2_t;
[ 1621s]         ^
[ 1621s] /usr/include/bits/types.h:41:20: note: '__int32_t' declared here
[ 1621s] typedef signed int __int32_t;
[ 1621s]                    ^
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx:11:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:41:9: error: unknown type name '__Int64x1_t'; did you mean '__int64_t'?
[ 1621s] typedef __Int64x1_t int64x1_t;
[ 1621s]         ^
[ 1621s] /usr/include/bits/types.h:44:25: note: '__int64_t' declared here
[ 1621s] typedef signed long int __int64_t;
[ 1621s]                         ^
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx:11:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:42:9: error: unknown type name '__Float16x4_t'
[ 1621s] typedef __Float16x4_t float16x4_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:43:9: error: unknown type name '__Float32x2_t'
[ 1621s] typedef __Float32x2_t float32x2_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:44:9: error: unknown type name '__Poly8x8_t'
[ 1621s] typedef __Poly8x8_t poly8x8_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:45:9: error: unknown type name '__Poly16x4_t'
[ 1621s] typedef __Poly16x4_t poly16x4_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:46:9: error: unknown type name '__Uint8x8_t'
[ 1621s] typedef __Uint8x8_t uint8x8_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:47:9: error: unknown type name '__Uint16x4_t'
[ 1621s] typedef __Uint16x4_t uint16x4_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:48:9: error: unknown type name '__Uint32x2_t'
[ 1621s] typedef __Uint32x2_t uint32x2_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:49:9: error: unknown type name '__Float64x1_t'
[ 1621s] typedef __Float64x1_t float64x1_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:50:9: error: unknown type name '__Uint64x1_t'
[ 1621s] typedef __Uint64x1_t uint64x1_t;
[ 1621s]         ^
[ 1621s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:51:9: error: unknown type name '__Int8x16_t'; did you mean '__int16_t'?
[ 1621s] typedef __Int8x16_t int8x16_t;
[ 1621s]         ^
[ 1621s] /usr/include/bits/types.h:39:26: note: '__int16_t' declared here
[ 1621s] typedef signed short int __int16_t;
[ 1621s]                          ^
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx:11:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1621s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1621s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1622s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:52:9: error: unknown type name '__Int16x8_t'
[ 1622s] typedef __Int16x8_t int16x8_t;
[ 1622s]         ^
[ 1622s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:53:9: error: unknown type name '__Int32x4_t'; did you mean '__int32_t'?
[ 1622s] typedef __Int32x4_t int32x4_t;
[ 1622s]         ^
[ 1622s] /usr/include/bits/types.h:41:20: note: '__int32_t' declared here
[ 1622s] typedef signed int __int32_t;
[ 1622s]                    ^
[ 1622s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx:11:
[ 1622s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1622s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1622s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1622s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1622s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:54:9: error: unknown type name '__Int64x2_t'; did you mean '__int64_t'?
[ 1622s] typedef __Int64x2_t int64x2_t;
[ 1622s]         ^
[ 1622s] /usr/include/bits/types.h:44:25: note: '__int64_t' declared here
[ 1622s] typedef signed long int __int64_t;
[ 1622s]                         ^
[ 1622s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTPadImageFilter.cxx:11:
[ 1622s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1622s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1622s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1622s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1622s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:55:9: error: unknown type name '__Float16x8_t'; did you mean '__SVFloat16_t'?
[ 1622s] typedef __Float16x8_t float16x8_t;
[ 1622s]         ^
[ 1622s] note: '__SVFloat16_t' declared here
[ 1622s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:56:9: error: unknown type name '__Float32x4_t'
[ 1622s] typedef __Float32x4_t float32x4_t;
[ 1622s]         ^
[ 1622s] fatal error: too many errors emitted, stopping now [-ferror-limit=]
[ 1622s] 20 errors generated.
[ 1625s] [1120/4451] : && /usr/bin/c++ -fPIC -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG  -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel  -O2 -g -DNDEBUG  -flto=auto -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -shared -Wl,-soname,libITKIOMeshOFF-5.1.so.1 -o lib/libITKIOMeshOFF-5.1.so.1 Modules/IO/MeshOFF/src/CMakeFiles/ITKIOMeshOFF.dir/itkOFFMeshIO.cxx.o Modules/IO/MeshOFF/src/CMakeFiles/ITKIOMeshOFF.dir/itkOFFMeshIOFactory.cxx.o -L/usr/lib64/usr/lib64 -Wl,-rpath,/usr/lib64/usr/lib64:/home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/lib:  lib/libITKIOMeshBase-5.1.so.1  lib/libITKIOImageBase-5.1.so.1  lib/libITKQuadEdgeMesh-5.1.so.1  lib/libITKMesh-5.1.so.1  lib/libITKTransform-5.1.so.1  lib/libITKCommon-5.1.so.1  lib/libitksys-5.1.so.1  lib/libITKVNLInstantiation-5.1.so.1  lib/libitkvnl_algo-5.1.so.1  lib/libitkvnl-5.1.so.1  lib/libitkv3p_netlib-5.1.so.1  lib/libitkvcl-5.1.so.1  -lm  -lpthread  -lm  -ldl  -Wl,-rpath-link,/home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/lib && :
[ 1632s] [1121/4451] cd /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/Modules/ITKFFT && /usr/bin/castxml -o /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /usr/bin/c++ -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel -std=c++11 ")" -w -c @/home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/ITKFFT.castxml.inc /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx
[ 1632s] FAILED: Wrapping/itkFFTWComplexToComplexFFTImageFilter.xml 
[ 1632s] cd /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/Modules/ITKFFT && /usr/bin/castxml -o /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /usr/bin/c++ -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel -std=c++11 ")" -w -c @/home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/ITKFFT.castxml.inc /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx:11:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:38:9: error: unknown type name '__Int8x8_t'
[ 1632s] typedef __Int8x8_t int8x8_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:39:9: error: unknown type name '__Int16x4_t'
[ 1632s] typedef __Int16x4_t int16x4_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:40:9: error: unknown type name '__Int32x2_t'; did you mean '__int32_t'?
[ 1632s] typedef __Int32x2_t int32x2_t;
[ 1632s]         ^
[ 1632s] /usr/include/bits/types.h:41:20: note: '__int32_t' declared here
[ 1632s] typedef signed int __int32_t;
[ 1632s]                    ^
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx:11:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:41:9: error: unknown type name '__Int64x1_t'; did you mean '__int64_t'?
[ 1632s] typedef __Int64x1_t int64x1_t;
[ 1632s]         ^
[ 1632s] /usr/include/bits/types.h:44:25: note: '__int64_t' declared here
[ 1632s] typedef signed long int __int64_t;
[ 1632s]                         ^
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx:11:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:42:9: error: unknown type name '__Float16x4_t'
[ 1632s] typedef __Float16x4_t float16x4_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:43:9: error: unknown type name '__Float32x2_t'
[ 1632s] typedef __Float32x2_t float32x2_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:44:9: error: unknown type name '__Poly8x8_t'
[ 1632s] typedef __Poly8x8_t poly8x8_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:45:9: error: unknown type name '__Poly16x4_t'
[ 1632s] typedef __Poly16x4_t poly16x4_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:46:9: error: unknown type name '__Uint8x8_t'
[ 1632s] typedef __Uint8x8_t uint8x8_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:47:9: error: unknown type name '__Uint16x4_t'
[ 1632s] typedef __Uint16x4_t uint16x4_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:48:9: error: unknown type name '__Uint32x2_t'
[ 1632s] typedef __Uint32x2_t uint32x2_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:49:9: error: unknown type name '__Float64x1_t'
[ 1632s] typedef __Float64x1_t float64x1_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:50:9: error: unknown type name '__Uint64x1_t'
[ 1632s] typedef __Uint64x1_t uint64x1_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:51:9: error: unknown type name '__Int8x16_t'; did you mean '__int16_t'?
[ 1632s] typedef __Int8x16_t int8x16_t;
[ 1632s]         ^
[ 1632s] /usr/include/bits/types.h:39:26: note: '__int16_t' declared here
[ 1632s] typedef signed short int __int16_t;
[ 1632s]                          ^
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx:11:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:52:9: error: unknown type name '__Int16x8_t'
[ 1632s] typedef __Int16x8_t int16x8_t;
[ 1632s]         ^
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:53:9: error: unknown type name '__Int32x4_t'; did you mean '__int32_t'?
[ 1632s] typedef __Int32x4_t int32x4_t;
[ 1632s]         ^
[ 1632s] /usr/include/bits/types.h:41:20: note: '__int32_t' declared here
[ 1632s] typedef signed int __int32_t;
[ 1632s]                    ^
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx:11:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:54:9: error: unknown type name '__Int64x2_t'; did you mean '__int64_t'?
[ 1632s] typedef __Int64x2_t int64x2_t;
[ 1632s]         ^
[ 1632s] /usr/include/bits/types.h:44:25: note: '__int64_t' declared here
[ 1632s] typedef signed long int __int64_t;
[ 1632s]                         ^
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/build/Wrapping/itkFFTWComplexToComplexFFTImageFilter.cxx:11:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 1632s] In file included from /home/abuild/rpmbuild/BUILD/InsightToolkit-5.1.0/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 1632s] In file included from /usr/include/eigen3/Eigen/Core:235:
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:55:9: error: unknown type name '__Float16x8_t'; did you mean '__SVFloat16_t'?
[ 1632s] typedef __Float16x8_t float16x8_t;
[ 1632s]         ^
[ 1632s] note: '__SVFloat16_t' declared here
[ 1632s] /usr/lib64/gcc/aarch64-suse-linux/10/include/arm_neon.h:56:9: error: unknown type name '__Float32x4_t'
[ 1632s] typedef __Float32x4_t float32x4_t;
[ 1632s]         ^
[ 1632s] fatal error: too many errors emitted, stopping now [-ferror-limit=]

Expected behavior

Build should succeed.

Actual behavior

Build fails.

Reproducibility

100%

Versions

5.1.0

Environment

openSUSE Tumbleweed

Additional Information

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 29 (16 by maintainers)

Commits related to this issue

Most upvoted comments

Thanks. The problem is described in Eigen’s code here. It relies on the code here to recognize when the compiler is Clang and uses a workaround for a problem compiling the code with Clang. However, CastXML is told by --castxml-cc-gnu to simulate the /usr/bin/c++ compiler’s preprocessor, which is not Clang. The result is that the preprocessed code thinks it is a GNU compiler, but the actual compiler processing it inside CastXML is Clang.

This kind of problem comes up once in a while, and is almost always a case of project code trying to work around a compiler bug. The solution is to teach Eigen’s code to be aware of CastXML as any other compiler, and recognize it via __castxml__, __castxml_clang_major__, __castxml_clang_minor__, etc. macros. For example, Eigen/src/Core/arch/NEON/Complex.h could be patched with the following hunk at a few places:

 // See bug 1325, clang fails to call vld1q_u64.
-#if EIGEN_COMP_CLANG
+#if EIGEN_COMP_CLANG || defined(__castxml__)