aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Kretz <m.kretz@gsi.de>2024-04-17 10:35:47 +0200
committerMatthias Kretz <m.kretz@gsi.de>2024-04-22 20:56:26 +0200
commite7a3ad29c9c832b6ae999cbfb0af89e121959030 (patch)
tree678c09f8e5e1146a49b9cd2e558df23bfb6b9d00
parentb0469e35dbcc9a93a2cb50e3c0445edc3db174be (diff)
downloadgcc-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.h8
-rw-r--r--libstdc++-v3/include/experimental/bits/simd_builtin.h3
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);
}