From 03ee46127621934c030d37f50aaefdef6bf9d4b0 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Fri, 27 Nov 2020 14:13:05 -0500 Subject: [PATCH] [libc++] Consistently unparenthesize `numeric_limits::max`. NFCI. I think people were sometimes parenthesizing `(foo::max)()` out of misplaced concern that an unparenthesized `foo::max()` would trip up Windows' `max(a,b)` macro. However, this is not the case: `max(a,b)` should be tripped up only by an unparenthesized call to `foo::max(a,b)`, and in fact we already do `_VSTD::max(a,b)` all over the place anyway without any guards. However, in order to do it without guards, we must also wrap the header in _LIBCPP_PUSH_MACROS, which was not. Differential Revision: https://reviews.llvm.org/D92240 --- libcxx/include/charconv | 12 ++++++------ libcxx/include/span | 7 ++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/libcxx/include/charconv b/libcxx/include/charconv index c830457..4664f5b 100644 --- a/libcxx/include/charconv +++ b/libcxx/include/charconv @@ -207,7 +207,7 @@ __mul_overflowed(unsigned char __a, _Tp __b, unsigned char& __r) { auto __c = __a * __b; __r = __c; - return __c > (numeric_limits::max)(); + return __c > numeric_limits::max(); } template @@ -216,7 +216,7 @@ __mul_overflowed(unsigned short __a, _Tp __b, unsigned short& __r) { auto __c = __a * __b; __r = __c; - return __c > (numeric_limits::max)(); + return __c > numeric_limits::max(); } template @@ -227,7 +227,7 @@ __mul_overflowed(_Tp __a, _Tp __b, _Tp& __r) #if !defined(_LIBCPP_COMPILER_MSVC) return __builtin_mul_overflow(__a, __b, &__r); #else - bool __did = __b && ((numeric_limits<_Tp>::max)() / __b) < __a; + bool __did = __b && (numeric_limits<_Tp>::max() / __b) < __a; __r = __a * __b; return __did; #endif @@ -435,7 +435,7 @@ __sign_combinator(_It __first, _It __last, _Tp& __value, _Fn __f, _Ts... __args) } else { - if (__x <= (__tl::max)()) + if (__x <= __tl::max()) { __value = __x; return __r; @@ -526,7 +526,7 @@ __from_chars_atoi(const char* __first, const char* __last, _Tp& __value) auto __p = __tx::__read(__first, __last, __a, __b); if (__p == __last || !__in_pattern(*__p)) { - __output_type __m = (numeric_limits<_Tp>::max)(); + __output_type __m = numeric_limits<_Tp>::max(); if (__m >= __a && __m - __a >= __b) { __value = __a + __b; @@ -581,7 +581,7 @@ __from_chars_integral(const char* __first, const char* __last, _Tp& __value, if (__p == __last || !__in_pattern(*__p, __base)) { - if ((__tl::max)() - __a >= __b) + if (__tl::max() - __a >= __b) { __value = __a + __b; return {__p, {}}; diff --git a/libcxx/include/span b/libcxx/include/span index b307c98..4f63d0a 100644 --- a/libcxx/include/span +++ b/libcxx/include/span @@ -132,11 +132,14 @@ template #pragma GCC system_header #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD #if _LIBCPP_STD_VER > 17 -inline constexpr size_t dynamic_extent = (numeric_limits::max)(); +inline constexpr size_t dynamic_extent = numeric_limits::max(); template class span; @@ -546,4 +549,6 @@ template _LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + #endif // _LIBCPP_SPAN -- 2.7.4