[libcxx-commits] [PATCH] D128181: [libc++] Make _LIBCPP_DEBUG_RANDOMIZE_RANGE a function
Nikolas Klauser via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jun 20 03:50:55 PDT 2022
philnik created this revision.
philnik added reviewers: ldionne, Mordante, var-const.
Herald added a project: All.
philnik requested review of this revision.
Herald added a project: libc++.
Herald added a subscriber: libcxx-commits.
Herald added a reviewer: libc++.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D128181
Files:
libcxx/include/__algorithm/nth_element.h
libcxx/include/__algorithm/partial_sort.h
libcxx/include/__algorithm/sort.h
libcxx/include/__debug
Index: libcxx/include/__debug
===================================================================
--- libcxx/include/__debug
+++ libcxx/include/__debug
@@ -27,21 +27,19 @@
# define _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY
#endif
-// TODO: Define this as a function instead
-#if defined(_LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY)
-# if defined(_LIBCPP_CXX03_LANG)
-# error Support for unspecified stability is only for C++11 and higher
-# endif
-# define _LIBCPP_DEBUG_RANDOMIZE_RANGE(__first, __last) \
- do { \
- if (!__builtin_is_constant_evaluated()) \
- std::shuffle(__first, __last, __libcpp_debug_randomizer()); \
- } while (false)
-#else
-# define _LIBCPP_DEBUG_RANDOMIZE_RANGE(__first, __last) \
- do { \
- } while (false)
+_LIBCPP_BEGIN_NAMESPACE_STD
+template <class _Iterator>
+void __debug_randomize_range(_Iterator __first, _Iterator __last) {
+#ifdef _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY
+# ifdef _LIBCPP_CXX03_LANG
+# error Support for unspecified stability is only for C++11 and higher
+# endif
+
+ if (!__libcpp_is_constant_evaluated())
+ std::shuffle(__first, __last, __libcpp_debug_randomizer());
#endif
+}
+_LIBCPP_END_NAMESPACE_STD
#ifdef _LIBCPP_ENABLE_DEBUG_MODE
# define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(::std::__libcpp_is_constant_evaluated() || (x), m)
Index: libcxx/include/__algorithm/sort.h
===================================================================
--- libcxx/include/__algorithm/sort.h
+++ libcxx/include/__algorithm/sort.h
@@ -582,7 +582,7 @@
template <class _RandomAccessIterator, class _Comp>
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17
void __sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) {
- _LIBCPP_DEBUG_RANDOMIZE_RANGE(__first, __last);
+ std::__debug_randomize_range(__first, __last);
using _Comp_ref = typename __comp_ref_type<_Comp>::type;
if (__libcpp_is_constant_evaluated()) {
std::__partial_sort<_Comp_ref>(__first, __last, __last, _Comp_ref(__comp));
Index: libcxx/include/__algorithm/partial_sort.h
===================================================================
--- libcxx/include/__algorithm/partial_sort.h
+++ libcxx/include/__algorithm/partial_sort.h
@@ -55,10 +55,10 @@
partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last,
_Compare __comp)
{
- _LIBCPP_DEBUG_RANDOMIZE_RANGE(__first, __last);
+ std::__debug_randomize_range(__first, __last);
typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
_VSTD::__partial_sort<_Comp_ref>(__first, __middle, __last, __comp);
- _LIBCPP_DEBUG_RANDOMIZE_RANGE(__middle, __last);
+ std::__debug_randomize_range(__middle, __last);
}
template <class _RandomAccessIterator>
Index: libcxx/include/__algorithm/nth_element.h
===================================================================
--- libcxx/include/__algorithm/nth_element.h
+++ libcxx/include/__algorithm/nth_element.h
@@ -227,12 +227,12 @@
void
nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp)
{
- _LIBCPP_DEBUG_RANDOMIZE_RANGE(__first, __last);
+ std::__debug_randomize_range(__first, __last);
typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
_VSTD::__nth_element<_Comp_ref>(__first, __nth, __last, __comp);
- _LIBCPP_DEBUG_RANDOMIZE_RANGE(__first, __nth);
+ std::__debug_randomize_range(__first, __nth);
if (__nth != __last) {
- _LIBCPP_DEBUG_RANDOMIZE_RANGE(++__nth, __last);
+ std::__debug_randomize_range(++__nth, __last);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D128181.438331.patch
Type: text/x-patch
Size: 4062 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220620/b96ce768/attachment.bin>
More information about the libcxx-commits
mailing list