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.
This commit is contained in:
parent
d97d71a198
commit
c1676651b6
|
@ -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
|
||||
|
||||
//
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>;
|
||||
|
||||
|
|
|
@ -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>);
|
||||
|
|
|
@ -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"++"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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__)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue