aboutsummaryrefslogtreecommitdiff
path: root/lib/libcxx/include/__utility/cmp.h
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2024-04-26 15:33:29 -0700
committerAndrew Kelley <andrew@ziglang.org>2024-05-08 19:37:29 -0700
commit06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76 (patch)
tree1316711b92a43dd5c599e425b8693fa8e1e0c0b7 /lib/libcxx/include/__utility/cmp.h
parentbc6ebc6f2597fda1f98842c6f545751fef2a5334 (diff)
downloadzig-06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76.tar.gz
zig-06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76.zip
libcxx: update to LLVM 18
release/18.x branch, commit 78b99c73ee4b96fe9ce0e294d4632326afb2db42 This adds the flag `-D_LIBCPP_HARDENING_MODE` which is determined based on the Zig optimization mode. This commit also fixes libunwind, libcxx, and libcxxabi to properly report sub compilation errors.
Diffstat (limited to 'lib/libcxx/include/__utility/cmp.h')
-rw-r--r--lib/libcxx/include/__utility/cmp.h74
1 files changed, 22 insertions, 52 deletions
diff --git a/lib/libcxx/include/__utility/cmp.h b/lib/libcxx/include/__utility/cmp.h
index 7b7b90136e..b7c1ed614d 100644
--- a/lib/libcxx/include/__utility/cmp.h
+++ b/lib/libcxx/include/__utility/cmp.h
@@ -9,14 +9,10 @@
#ifndef _LIBCPP___UTILITY_CMP_H
#define _LIBCPP___UTILITY_CMP_H
+#include <__concepts/arithmetic.h>
#include <__config>
-#include <__type_traits/disjunction.h>
-#include <__type_traits/is_integral.h>
-#include <__type_traits/is_same.h>
#include <__type_traits/is_signed.h>
#include <__type_traits/make_unsigned.h>
-#include <__utility/forward.h>
-#include <__utility/move.h>
#include <limits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -29,24 +25,9 @@ _LIBCPP_PUSH_MACROS
_LIBCPP_BEGIN_NAMESPACE_STD
#if _LIBCPP_STD_VER >= 20
-template<class _Tp, class... _Up>
-struct _IsSameAsAny : _Or<_IsSame<_Tp, _Up>...> {};
-
-template<class _Tp>
-concept __is_safe_integral_cmp = is_integral_v<_Tp> &&
- !_IsSameAsAny<_Tp, bool, char, char16_t, char32_t
-#ifndef _LIBCPP_HAS_NO_CHAR8_T
- , char8_t
-#endif
-#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
- , wchar_t
-#endif
- >::value;
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool cmp_equal(_Tp __t, _Up __u) noexcept
-{
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool cmp_equal(_Tp __t, _Up __u) noexcept {
if constexpr (is_signed_v<_Tp> == is_signed_v<_Up>)
return __t == __u;
else if constexpr (is_signed_v<_Tp>)
@@ -55,17 +36,13 @@ bool cmp_equal(_Tp __t, _Up __u) noexcept
return __u < 0 ? false : __t == make_unsigned_t<_Up>(__u);
}
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool cmp_not_equal(_Tp __t, _Up __u) noexcept
-{
- return !_VSTD::cmp_equal(__t, __u);
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool cmp_not_equal(_Tp __t, _Up __u) noexcept {
+ return !std::cmp_equal(__t, __u);
}
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool cmp_less(_Tp __t, _Up __u) noexcept
-{
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool cmp_less(_Tp __t, _Up __u) noexcept {
if constexpr (is_signed_v<_Tp> == is_signed_v<_Up>)
return __t < __u;
else if constexpr (is_signed_v<_Tp>)
@@ -74,34 +51,27 @@ bool cmp_less(_Tp __t, _Up __u) noexcept
return __u < 0 ? false : __t < make_unsigned_t<_Up>(__u);
}
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool cmp_greater(_Tp __t, _Up __u) noexcept
-{
- return _VSTD::cmp_less(__u, __t);
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool cmp_greater(_Tp __t, _Up __u) noexcept {
+ return std::cmp_less(__u, __t);
}
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool cmp_less_equal(_Tp __t, _Up __u) noexcept
-{
- return !_VSTD::cmp_greater(__t, __u);
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool cmp_less_equal(_Tp __t, _Up __u) noexcept {
+ return !std::cmp_greater(__t, __u);
}
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool cmp_greater_equal(_Tp __t, _Up __u) noexcept
-{
- return !_VSTD::cmp_less(__t, __u);
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool cmp_greater_equal(_Tp __t, _Up __u) noexcept {
+ return !std::cmp_less(__t, __u);
}
-template<__is_safe_integral_cmp _Tp, __is_safe_integral_cmp _Up>
-_LIBCPP_INLINE_VISIBILITY constexpr
-bool in_range(_Up __u) noexcept
-{
- return _VSTD::cmp_less_equal(__u, numeric_limits<_Tp>::max()) &&
- _VSTD::cmp_greater_equal(__u, numeric_limits<_Tp>::min());
+template <__libcpp_integer _Tp, __libcpp_integer _Up>
+_LIBCPP_HIDE_FROM_ABI constexpr bool in_range(_Up __u) noexcept {
+ return std::cmp_less_equal(__u, numeric_limits<_Tp>::max()) &&
+ std::cmp_greater_equal(__u, numeric_limits<_Tp>::min());
}
+
#endif // _LIBCPP_STD_VER >= 20
_LIBCPP_END_NAMESPACE_STD