aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMatthias Kretz <m.kretz@gsi.de>2024-06-03 12:02:07 +0200
committerMatthias Kretz <m.kretz@gsi.de>2024-06-04 10:21:22 +0200
commit8e36cf4c5c9140915d0019999db132a900b48037 (patch)
tree60bd3240fb6ac273502aadf22287edba437d698d /gcc
parentd93353e6423ecaaae9fa47d0935caafd9abfe4de (diff)
downloadgcc-8e36cf4c5c9140915d0019999db132a900b48037.zip
gcc-8e36cf4c5c9140915d0019999db132a900b48037.tar.gz
gcc-8e36cf4c5c9140915d0019999db132a900b48037.tar.bz2
libstdc++: Fix simd<char> conversion for -fno-signed-char for Clang
The special case for Clang in the trait producing a signed integer type lead to the trait returning 'char' where it should have been 'signed char'. This workaround was introduced because on Clang the return type of vector compares was not convertible to '_SimdWrapper< __int_for_sizeof_t<...' unless '__int_for_sizeof_t<char>' was an alias for 'char'. In order to not rewrite the complete mask type code (there is code scattered around the implementation assuming signed integers), this needs to be 'signed char'; so the special case for Clang needs to be removed. The conversion issue is now solved in _SimdWrapper, which now additionally allows conversion from vector types with compatible integral type. Signed-off-by: Matthias Kretz <m.kretz@gsi.de> libstdc++-v3/ChangeLog: PR libstdc++/115308 * include/experimental/bits/simd.h (__int_for_sizeof): Remove special cases for __clang__. (_SimdWrapper): Change constructor overload set to allow conversion from vector types with integral conversions via bit reinterpretation.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions