https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115308
Bug ID: 115308 Summary: std::experimental::simd<char> is not convertible to NEON intrinsic type with Clang Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: mkretz at gcc dot gnu.org Reporter: mkretz at gcc dot gnu.org Target Milestone: --- Target: arm-*-*, aarch64-*-* std::experimental::parallelism_v2::__int_for_sizeof<1>() returns 'char' instead of 'signed char' if __clang__ is defined. With -fno-signed-char that's an observable bug. https://github.com/VcDevel/std-simd/commit/2f99e2813fc751d2493ad79bc1aec3ce64c7c49e is the commit that introduced it (before the merge to libstdc++). "Use char for 1 byte and long long for 8 bytes. This is necessary to match the return vector type of vector compares." I'm taking a guess here that this is due to GCC applying -flax-vector-conversions on vector compare results and Clang probably doesn't do it. But that still doesn't really justify returning 'char' unconditionally for trait that is supposed to return a signed integer type. The mask type issue must be solved differently, so that __int_for_sizeof can return the right type again. All releases of GCC are affected.