diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-04-26 15:33:29 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-05-08 19:37:29 -0700 |
| commit | 06ee65af9ed6aa5ee4d1d7f4fab9d7acecf66e76 (patch) | |
| tree | 1316711b92a43dd5c599e425b8693fa8e1e0c0b7 /lib/libcxx/include/__utility/cmp.h | |
| parent | bc6ebc6f2597fda1f98842c6f545751fef2a5334 (diff) | |
| download | zig-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.h | 74 |
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 |
