public inbox for libstdc++-cvs@sourceware.org help / color / mirror / Atom feed
From: Jonathan Wakely <redi@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r12-2343] libstdc++: Suppress pedantic warnings about __int128 Date: Fri, 16 Jul 2021 07:40:54 +0000 (GMT) [thread overview] Message-ID: <20210716074054.6C8DA3857C67@sourceware.org> (raw) https://gcc.gnu.org/g:c1676651b6c417e8f2b276a28199d76943834277 commit r12-2343-gc1676651b6c417e8f2b276a28199d76943834277 Author: Jonathan Wakely <jwakely@redhat.com> Date: Thu Jul 15 15:36:34 2021 +0100 libstdc++: Suppress pedantic warnings about __int128 With -std=c++NN -pedantic -Wsystem-headers there are warnings about the use of __int128, which can be suppressed using diagnostic pragmas. Signed-off-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: * include/bits/cpp_type_traits.h: Add diagnostic pragmas around uses of non-standard integer types. * include/bits/functional_hash.h: Likewise. * include/bits/iterator_concepts.h: Likewise. * include/bits/max_size_type.h: Likewise. * include/bits/std_abs.h: Likewise. * include/bits/stl_algobase.h: Likewise. * include/bits/uniform_int_dist.h: Likewise. * include/ext/numeric_traits.h: Likewise. * include/std/type_traits: Likewise. Diff: --- libstdc++-v3/include/bits/cpp_type_traits.h | 5 +++++ libstdc++-v3/include/bits/functional_hash.h | 5 +++++ libstdc++-v3/include/bits/iterator_concepts.h | 5 +++++ libstdc++-v3/include/bits/max_size_type.h | 6 ++++++ libstdc++-v3/include/bits/std_abs.h | 5 +++++ libstdc++-v3/include/bits/stl_algobase.h | 5 +++++ libstdc++-v3/include/bits/uniform_int_dist.h | 3 +++ libstdc++-v3/include/ext/numeric_traits.h | 3 +++ libstdc++-v3/include/std/type_traits | 18 ++++++++++++++++++ 9 files changed, 55 insertions(+) diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h b/libstdc++-v3/include/bits/cpp_type_traits.h index ca0d68c29de..8f8dd817dc2 100644 --- a/libstdc++-v3/include/bits/cpp_type_traits.h +++ b/libstdc++-v3/include/bits/cpp_type_traits.h @@ -266,6 +266,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef __true_type __type; \ }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #ifdef __GLIBCXX_TYPE_INT_N_0 __INT_N(__GLIBCXX_TYPE_INT_N_0) #endif @@ -279,6 +282,8 @@ __INT_N(__GLIBCXX_TYPE_INT_N_2) __INT_N(__GLIBCXX_TYPE_INT_N_3) #endif +#pragma GCC diagnostic pop + #undef __INT_N // diff --git a/libstdc++-v3/include/bits/functional_hash.h b/libstdc++-v3/include/bits/functional_hash.h index 7be8ebfa2d3..78e3644bc74 100644 --- a/libstdc++-v3/include/bits/functional_hash.h +++ b/libstdc++-v3/include/bits/functional_hash.h @@ -171,6 +171,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Explicit specialization for unsigned long long. _Cxx_hashtable_define_trivial_hash(unsigned long long) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #ifdef __GLIBCXX_TYPE_INT_N_0 _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0) _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0 unsigned) @@ -188,6 +191,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3 unsigned) #endif +#pragma GCC diagnostic pop + #undef _Cxx_hashtable_define_trivial_hash struct _Hash_impl diff --git a/libstdc++-v3/include/bits/iterator_concepts.h b/libstdc++-v3/include/bits/iterator_concepts.h index c273056c204..97c0b80a507 100644 --- a/libstdc++-v3/include/bits/iterator_concepts.h +++ b/libstdc++-v3/include/bits/iterator_concepts.h @@ -553,6 +553,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class __max_diff_type; class __max_size_type; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + template<typename _Tp> concept __is_signed_int128 #if __SIZEOF_INT128__ @@ -569,6 +572,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION = false; #endif +#pragma GCC diagnostic pop + template<typename _Tp> concept __cv_bool = same_as<const volatile _Tp, const volatile bool>; diff --git a/libstdc++-v3/include/bits/max_size_type.h b/libstdc++-v3/include/bits/max_size_type.h index 153b1bff5f4..24237cc57de 100644 --- a/libstdc++-v3/include/bits/max_size_type.h +++ b/libstdc++-v3/include/bits/max_size_type.h @@ -417,7 +417,10 @@ namespace ranges #endif #if __SIZEOF_INT128__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" using __rep = unsigned __int128; +#pragma GCC diagnostic pop #else using __rep = unsigned long long; #endif @@ -771,7 +774,10 @@ namespace ranges static constexpr bool is_integer = true; static constexpr bool is_exact = true; #if __SIZEOF_INT128__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" static_assert(same_as<_Sp::__rep, unsigned __int128>); +#pragma GCC diagnostic pop static constexpr int digits = 129; #else static_assert(same_as<_Sp::__rep, unsigned long long>); diff --git a/libstdc++-v3/include/bits/std_abs.h b/libstdc++-v3/include/bits/std_abs.h index ae6bfc1b1ac..c65ebb66439 100644 --- a/libstdc++-v3/include/bits/std_abs.h +++ b/libstdc++-v3/include/bits/std_abs.h @@ -80,6 +80,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __builtin_fabsl(__x); } #endif +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #if defined(__GLIBCXX_TYPE_INT_N_0) inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_0 abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; } @@ -104,6 +107,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __x < 0 ? -__x : __x; } #endif +#pragma GCC diagnostic pop + _GLIBCXX_END_NAMESPACE_VERSION } // namespace } // extern "C"++" diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index d001b5f9dae..7f920dbdbf7 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -1013,6 +1013,9 @@ _GLIBCXX_END_NAMESPACE_CONTAINER inline _GLIBCXX_CONSTEXPR unsigned long long __size_to_integer(unsigned long long __n) { return __n; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #if defined(__GLIBCXX_TYPE_INT_N_0) inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_0 __size_to_integer(__GLIBCXX_TYPE_INT_N_0 __n) { return __n; } @@ -1038,6 +1041,8 @@ _GLIBCXX_END_NAMESPACE_CONTAINER __size_to_integer(unsigned __GLIBCXX_TYPE_INT_N_3 __n) { return __n; } #endif +#pragma GCC diagnostic pop + inline _GLIBCXX_CONSTEXPR long long __size_to_integer(float __n) { return (long long)__n; } inline _GLIBCXX_CONSTEXPR long long diff --git a/libstdc++-v3/include/bits/uniform_int_dist.h b/libstdc++-v3/include/bits/uniform_int_dist.h index 2d83524caf6..8ee33450fa1 100644 --- a/libstdc++-v3/include/bits/uniform_int_dist.h +++ b/libstdc++-v3/include/bits/uniform_int_dist.h @@ -299,6 +299,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if defined __UINT64_TYPE__ && defined __UINT32_TYPE__ #if __SIZEOF_INT128__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" if _GLIBCXX17_CONSTEXPR (__urngrange == __UINT64_MAX__) { // __urng produces values that use exactly 64-bits, @@ -307,6 +309,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __ret = _S_nd<unsigned __int128>(__urng, __u64erange); } else +#pragma GCC diagnostic pop #endif if _GLIBCXX17_CONSTEXPR (__urngrange == __UINT32_MAX__) { diff --git a/libstdc++-v3/include/ext/numeric_traits.h b/libstdc++-v3/include/ext/numeric_traits.h index a81fa6f0d85..0dc1bc61f3e 100644 --- a/libstdc++-v3/include/ext/numeric_traits.h +++ b/libstdc++-v3/include/ext/numeric_traits.h @@ -123,9 +123,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif #if defined __STRICT_ANSI__ && defined __SIZEOF_INT128__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" // In strict modes __is_integer<__int128> is false, // but we still want to define __numeric_traits_integer<__int128>. _GLIBCXX_INT_N_TRAITS(__int128, 128) +#pragma GCC diagnostic pop #endif #undef _GLIBCXX_INT_N_TRAITS diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index cccc6eed763..91d65234f23 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -347,6 +347,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __is_integral_helper<unsigned long long> : public true_type { }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + // Conditionalizing on __STRICT_ANSI__ here will break any port that // uses one of these types for size_t. #if defined(__GLIBCXX_TYPE_INT_N_0) @@ -385,6 +388,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_3> : public true_type { }; #endif +#pragma GCC diagnostic pop /// @endcond /// is_integral @@ -617,6 +621,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp, typename... _Types> using __is_one_of = __or_<is_same<_Tp, _Types>...>; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + // Check if a type is one of the signed integer types. template<typename _Tp> using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, @@ -654,6 +661,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION , unsigned __GLIBCXX_TYPE_INT_N_3 #endif >; +#pragma GCC diagnostic pop // Check if a type is one of the signed or unsigned integer types. template<typename _Tp> @@ -1717,6 +1725,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __make_unsigned<long long> { typedef unsigned long long __type; }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #if defined(__GLIBCXX_TYPE_INT_N_0) template<> struct __make_unsigned<__GLIBCXX_TYPE_INT_N_0> @@ -1738,6 +1749,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { typedef unsigned __GLIBCXX_TYPE_INT_N_3 __type; }; #endif +#pragma GCC diagnostic pop + // Select between integral and enum: not possible to be both. template<typename _Tp, bool _IsInt = is_integral<_Tp>::value, @@ -1873,6 +1886,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __make_signed<unsigned long long> { typedef signed long long __type; }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" + #if defined(__GLIBCXX_TYPE_INT_N_0) template<> struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_0> @@ -1894,6 +1910,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { typedef __GLIBCXX_TYPE_INT_N_3 __type; }; #endif +#pragma GCC diagnostic pop + // Select between integral and enum: not possible to be both. template<typename _Tp, bool _IsInt = is_integral<_Tp>::value,
reply other threads:[~2021-07-16 7:40 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210716074054.6C8DA3857C67@sourceware.org \ --to=redi@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ --cc=libstdc++-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).