From: Matthias Kretz Date: Wed, 17 Apr 2024 08:35:47 +0000 (+0200) Subject: libstdc++: Silence irrelevant warnings in X-Git-Tag: releases/gcc-11.5.0~151 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6679ea120ee06355ba309c53604b23909d325b98;p=thirdparty%2Fgcc.git libstdc++: Silence irrelevant warnings in 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 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. (cherry picked from commit e7a3ad29c9c832b6ae999cbfb0af89e121959030) --- diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h index 248237731268..56ec9dd4a84d 100644 --- a/libstdc++-v3/include/experimental/bits/simd.h +++ b/libstdc++-v3/include/experimental/bits/simd.h @@ -42,7 +42,12 @@ #if _GLIBCXX_SIMD_X86INTRIN #include #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 +#pragma GCC diagnostic pop #endif /** @ingroup ts_simd @@ -385,6 +390,7 @@ template constexpr auto __int_for_sizeof() { + static_assert(_Bytes > 0); if constexpr (_Bytes == sizeof(int)) return int(); #ifdef __clang__ @@ -450,7 +456,7 @@ template 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 9703012a6d95..42e894ac3b0b 100644 --- a/libstdc++-v3/include/experimental/bits/simd_builtin.h +++ b/libstdc++-v3/include/experimental/bits/simd_builtin.h @@ -276,8 +276,7 @@ template __extract_part(const _SimdWrapper __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); }