diff options
author | Matthias Kretz <m.kretz@gsi.de> | 2024-04-17 10:35:47 +0200 |
---|---|---|
committer | Matthias Kretz <m.kretz@gsi.de> | 2024-04-22 20:56:26 +0200 |
commit | e7a3ad29c9c832b6ae999cbfb0af89e121959030 (patch) | |
tree | 678c09f8e5e1146a49b9cd2e558df23bfb6b9d00 | |
parent | b0469e35dbcc9a93a2cb50e3c0445edc3db174be (diff) | |
download | gcc-e7a3ad29c9c832b6ae999cbfb0af89e121959030.zip gcc-e7a3ad29c9c832b6ae999cbfb0af89e121959030.tar.gz gcc-e7a3ad29c9c832b6ae999cbfb0af89e121959030.tar.bz2 |
libstdc++: Silence irrelevant warnings in <experimental/simd>
Avoid
-Wnarrowing in C code;
-Wtautological-compare in unconditional static_assert (necessary for
faking a dependency on a template parameter)
Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:
* include/experimental/bits/simd.h: Ignore -Wnarrowing for
arm_neon.h.
(__int_for_sizeof): Replace tautological compare with checking
for invalid template parameter value.
* include/experimental/bits/simd_builtin.h (__extract_part):
Remove tautological compare by combining two static_assert.
-rw-r--r-- | libstdc++-v3/include/experimental/bits/simd.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/experimental/bits/simd_builtin.h | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h index 03c2e17..6ef9c95 100644 --- a/libstdc++-v3/include/experimental/bits/simd.h +++ b/libstdc++-v3/include/experimental/bits/simd.h @@ -44,7 +44,12 @@ #if _GLIBCXX_SIMD_X86INTRIN #include <x86intrin.h> #elif _GLIBCXX_SIMD_HAVE_NEON +#pragma GCC diagnostic push +// narrowing conversion of '__a' from 'uint64_t' {aka 'long long unsigned int'} to +// 'int64x1_t' {aka 'long long int'} [-Wnarrowing] +#pragma GCC diagnostic ignored "-Wnarrowing" #include <arm_neon.h> +#pragma GCC diagnostic pop #endif #if _GLIBCXX_SIMD_HAVE_SVE #include <arm_sve.h> @@ -598,6 +603,7 @@ template <size_t _Bytes> constexpr auto __int_for_sizeof() { + static_assert(_Bytes > 0); if constexpr (_Bytes == sizeof(int)) return int(); #ifdef __clang__ @@ -663,7 +669,7 @@ template <size_t _Bytes> return _Ip{}; } else - static_assert(_Bytes != _Bytes, "this should be unreachable"); + static_assert(_Bytes == 0, "this should be unreachable"); } #pragma GCC diagnostic pop diff --git a/libstdc++-v3/include/experimental/bits/simd_builtin.h b/libstdc++-v3/include/experimental/bits/simd_builtin.h index af0c488..49c7c7e 100644 --- a/libstdc++-v3/include/experimental/bits/simd_builtin.h +++ b/libstdc++-v3/include/experimental/bits/simd_builtin.h @@ -278,8 +278,7 @@ template <int _Index, int _Total, int _Combine = 1, size_t _Np> __extract_part(const _SimdWrapper<bool, _Np> __x) { static_assert(_Combine == 1, "_Combine != 1 not implemented"); - static_assert(__have_avx512f && _Np == _Np); - static_assert(_Total >= 2 && _Index + _Combine <= _Total && _Index >= 0); + static_assert(__have_avx512f && _Total >= 2 && _Index + _Combine <= _Total && _Index >= 0); return __x._M_data >> (_Index * _Np / _Total); } |