@@ -64,7 +64,7 @@ enum { __block_size = sizeof(uint64_t) * 8 };
6464
6565// Ensures that __c(*__x, *__y) is true by swapping *__x and *__y if necessary.
6666template <class _Compare , class _RandomAccessIterator >
67- inline _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
67+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
6868__cond_swap (_RandomAccessIterator __x, _RandomAccessIterator __y, _Compare __c) {
6969 // Note: this function behaves correctly even with proxy iterators (because it relies on `value_type`).
7070 using value_type = typename iterator_traits<_RandomAccessIterator>::value_type;
@@ -78,7 +78,7 @@ __cond_swap(_RandomAccessIterator __x, _RandomAccessIterator __y, _Compare __c)
7878// Ensures that *__x, *__y and *__z are ordered according to the comparator __c,
7979// under the assumption that *__y and *__z are already ordered.
8080template <class _Compare , class _RandomAccessIterator >
81- inline _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
81+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
8282__partially_sorted_swap (_RandomAccessIterator __x, _RandomAccessIterator __y, _RandomAccessIterator __z, _Compare __c) {
8383 // Note: this function behaves correctly even with proxy iterators (because it relies on `value_type`).
8484 using value_type = typename iterator_traits<_RandomAccessIterator>::value_type;
@@ -97,7 +97,7 @@ template <class,
9797 class _Compare ,
9898 class _RandomAccessIterator ,
9999 __enable_if_t <__use_branchless_sort<_Compare, _RandomAccessIterator>, int > = 0 >
100- inline _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
100+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
101101__sort3 (_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, _Compare __c) {
102102 bool __swapped1 = std::__cond_swap<_Compare>(__x2, __x3, __c);
103103 bool __swapped2 = std::__partially_sorted_swap<_Compare>(__x1, __x2, __x3, __c);
@@ -108,7 +108,7 @@ template <class _AlgPolicy,
108108 class _Compare ,
109109 class _RandomAccessIterator ,
110110 __enable_if_t <!__use_branchless_sort<_Compare, _RandomAccessIterator>, int > = 0 >
111- inline _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
111+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
112112__sort3 (_RandomAccessIterator __x, _RandomAccessIterator __y, _RandomAccessIterator __z, _Compare __c) {
113113 using _Ops = _IterOps<_AlgPolicy>;
114114
@@ -140,7 +140,7 @@ template <class,
140140 class _Compare ,
141141 class _RandomAccessIterator ,
142142 __enable_if_t <__use_branchless_sort<_Compare, _RandomAccessIterator>, int > = 0 >
143- inline void
143+ inline _LIBCPP_HIDE_FROM_ABI void
144144__sort4 (_RandomAccessIterator __x1,
145145 _RandomAccessIterator __x2,
146146 _RandomAccessIterator __x3,
@@ -157,7 +157,7 @@ template <class _AlgPolicy,
157157 class _Compare ,
158158 class _RandomAccessIterator ,
159159 __enable_if_t <!__use_branchless_sort<_Compare, _RandomAccessIterator>, int > = 0 >
160- inline void
160+ inline _LIBCPP_HIDE_FROM_ABI void
161161__sort4 (_RandomAccessIterator __x1,
162162 _RandomAccessIterator __x2,
163163 _RandomAccessIterator __x3,
@@ -182,7 +182,7 @@ template <class _AlgPolicy,
182182 class _Compare ,
183183 class _RandomAccessIterator ,
184184 __enable_if_t <__use_branchless_sort<_Compare, _RandomAccessIterator>, int > = 0 >
185- inline void
185+ inline _LIBCPP_HIDE_FROM_ABI void
186186__sort5 (_RandomAccessIterator __x1,
187187 _RandomAccessIterator __x2,
188188 _RandomAccessIterator __x3,
@@ -201,7 +201,7 @@ template <class _AlgPolicy,
201201 class _Compare ,
202202 class _RandomAccessIterator ,
203203 __enable_if_t <!__use_branchless_sort<_Compare, _RandomAccessIterator>, int > = 0 >
204- inline void
204+ inline _LIBCPP_HIDE_FROM_ABI void
205205__sort5 (_RandomAccessIterator __x1,
206206 _RandomAccessIterator __x2,
207207 _RandomAccessIterator __x3,
@@ -227,7 +227,7 @@ __sort5(_RandomAccessIterator __x1,
227227
228228// Assumes size > 0
229229template <class _AlgPolicy , class _Compare , class _BidirectionalIterator >
230- _LIBCPP_CONSTEXPR_SINCE_CXX14 void
230+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void
231231__selection_sort (_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) {
232232 _BidirectionalIterator __lm1 = __last;
233233 for (--__lm1; __first != __lm1; ++__first) {
@@ -240,7 +240,7 @@ __selection_sort(_BidirectionalIterator __first, _BidirectionalIterator __last,
240240// Sort the iterator range [__first, __last) using the comparator __comp using
241241// the insertion sort algorithm.
242242template <class _AlgPolicy , class _Compare , class _BidirectionalIterator >
243- _LIBCPP_CONSTEXPR_SINCE_CXX26 void
243+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
244244__insertion_sort (_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) {
245245 using _Ops = _IterOps<_AlgPolicy>;
246246
@@ -270,7 +270,8 @@ __insertion_sort(_BidirectionalIterator __first, _BidirectionalIterator __last,
270270// Assumes that there is an element in the position (__first - 1) and that each
271271// element in the input range is greater or equal to the element at __first - 1.
272272template <class _AlgPolicy , class _Compare , class _RandomAccessIterator >
273- void __insertion_sort_unguarded (_RandomAccessIterator const __first, _RandomAccessIterator __last, _Compare __comp) {
273+ _LIBCPP_HIDE_FROM_ABI void
274+ __insertion_sort_unguarded (_RandomAccessIterator const __first, _RandomAccessIterator __last, _Compare __comp) {
274275 using _Ops = _IterOps<_AlgPolicy>;
275276 typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
276277 typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
@@ -297,7 +298,8 @@ void __insertion_sort_unguarded(_RandomAccessIterator const __first, _RandomAcce
297298}
298299
299300template <class _AlgPolicy , class _Comp , class _RandomAccessIterator >
300- bool __insertion_sort_incomplete (_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) {
301+ _LIBCPP_HIDE_FROM_ABI bool
302+ __insertion_sort_incomplete (_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) {
301303 using _Ops = _IterOps<_AlgPolicy>;
302304
303305 typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -350,7 +352,7 @@ bool __insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIte
350352}
351353
352354template <class _AlgPolicy , class _RandomAccessIterator >
353- inline void __swap_bitmap_pos (
355+ inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos (
354356 _RandomAccessIterator __first, _RandomAccessIterator __last, uint64_t & __left_bitset, uint64_t & __right_bitset) {
355357 using _Ops = _IterOps<_AlgPolicy>;
356358 typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -368,7 +370,7 @@ inline void __swap_bitmap_pos(
368370template <class _Compare ,
369371 class _RandomAccessIterator ,
370372 class _ValueType = typename iterator_traits<_RandomAccessIterator>::value_type>
371- inline void
373+ inline _LIBCPP_HIDE_FROM_ABI void
372374__populate_left_bitset (_RandomAccessIterator __first, _Compare __comp, _ValueType& __pivot, uint64_t & __left_bitset) {
373375 // Possible vectorization. With a proper "-march" flag, the following loop
374376 // will be compiled into a set of SIMD instructions.
@@ -384,7 +386,7 @@ __populate_left_bitset(_RandomAccessIterator __first, _Compare __comp, _ValueTyp
384386template <class _Compare ,
385387 class _RandomAccessIterator ,
386388 class _ValueType = typename iterator_traits<_RandomAccessIterator>::value_type>
387- inline void
389+ inline _LIBCPP_HIDE_FROM_ABI void
388390__populate_right_bitset (_RandomAccessIterator __lm1, _Compare __comp, _ValueType& __pivot, uint64_t & __right_bitset) {
389391 // Possible vectorization. With a proper "-march" flag, the following loop
390392 // will be compiled into a set of SIMD instructions.
@@ -401,7 +403,7 @@ template <class _AlgPolicy,
401403 class _Compare ,
402404 class _RandomAccessIterator ,
403405 class _ValueType = typename iterator_traits<_RandomAccessIterator>::value_type>
404- inline void __bitset_partition_partial_blocks (
406+ inline _LIBCPP_HIDE_FROM_ABI void __bitset_partition_partial_blocks (
405407 _RandomAccessIterator& __first,
406408 _RandomAccessIterator& __lm1,
407409 _Compare __comp,
@@ -448,7 +450,7 @@ inline void __bitset_partition_partial_blocks(
448450}
449451
450452template <class _AlgPolicy , class _RandomAccessIterator >
451- inline void __swap_bitmap_pos_within (
453+ inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos_within (
452454 _RandomAccessIterator& __first, _RandomAccessIterator& __lm1, uint64_t & __left_bitset, uint64_t & __right_bitset) {
453455 using _Ops = _IterOps<_AlgPolicy>;
454456 typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -489,7 +491,7 @@ inline void __swap_bitmap_pos_within(
489491// __bitset_partition uses bitsets for storing outcomes of the comparisons
490492// between the pivot and other elements.
491493template <class _AlgPolicy , class _RandomAccessIterator , class _Compare >
492- std::pair<_RandomAccessIterator, bool >
494+ _LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool >
493495__bitset_partition (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {
494496 using _Ops = _IterOps<_AlgPolicy>;
495497 typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type;
@@ -581,7 +583,7 @@ __bitset_partition(_RandomAccessIterator __first, _RandomAccessIterator __last,
581583// the provided range is already sorted, false otherwise. We assume that the
582584// length of the range is at least three elements.
583585template <class _AlgPolicy , class _RandomAccessIterator , class _Compare >
584- std::pair<_RandomAccessIterator, bool >
586+ _LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool >
585587__partition_with_equals_on_right (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {
586588 using _Ops = _IterOps<_AlgPolicy>;
587589 typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -649,7 +651,7 @@ __partition_with_equals_on_right(_RandomAccessIterator __first, _RandomAccessIte
649651// Similar to the above function. Elements equivalent to the pivot are put to
650652// the left of the pivot. Returns the iterator to the pivot element.
651653template <class _AlgPolicy , class _RandomAccessIterator , class _Compare >
652- _RandomAccessIterator
654+ _LIBCPP_HIDE_FROM_ABI _RandomAccessIterator
653655__partition_with_equals_on_left (_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {
654656 using _Ops = _IterOps<_AlgPolicy>;
655657 typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -826,7 +828,6 @@ void __introsort(_RandomAccessIterator __first,
826828 }
827829}
828830
829- _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
830831template <class _Comp , class _RandomAccessIterator >
831832void __sort (_RandomAccessIterator, _RandomAccessIterator, _Comp);
832833
@@ -855,10 +856,9 @@ extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less<float>&, float*>(fl
855856extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less<double >&, double *>(double *, double *, __less<double >&);
856857extern template _LIBCPP_EXPORTED_FROM_ABI void
857858__sort<__less<long double >&, long double *>(long double *, long double *, __less<long double >&);
858- _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
859859
860860template <class _AlgPolicy , class _RandomAccessIterator , class _Comp >
861- _LIBCPP_CONSTEXPR_SINCE_CXX20 void
861+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
862862__sort_dispatch (_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) {
863863 typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
864864 difference_type __depth_limit = 2 * std::__bit_log2 (std::__to_unsigned_like (__last - __first));
@@ -895,35 +895,35 @@ using __sort_is_specialized_in_library _LIBCPP_NODEBUG = __is_any_of<
895895 long double >;
896896
897897template <class _AlgPolicy , class _Type , __enable_if_t <__sort_is_specialized_in_library<_Type>::value, int > = 0 >
898- void __sort_dispatch (_Type* __first, _Type* __last, __less<>&) {
898+ _LIBCPP_HIDE_FROM_ABI void __sort_dispatch (_Type* __first, _Type* __last, __less<>&) {
899899 __less<_Type> __comp;
900900 std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp);
901901}
902902
903903template <class _AlgPolicy , class _Type , __enable_if_t <__sort_is_specialized_in_library<_Type>::value, int > = 0 >
904- void __sort_dispatch (_Type* __first, _Type* __last, less<_Type>&) {
904+ _LIBCPP_HIDE_FROM_ABI void __sort_dispatch (_Type* __first, _Type* __last, less<_Type>&) {
905905 __less<_Type> __comp;
906906 std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp);
907907}
908908
909909#if _LIBCPP_STD_VER >= 14
910910template <class _AlgPolicy , class _Type , __enable_if_t <__sort_is_specialized_in_library<_Type>::value, int > = 0 >
911- void __sort_dispatch (_Type* __first, _Type* __last, less<>&) {
911+ _LIBCPP_HIDE_FROM_ABI void __sort_dispatch (_Type* __first, _Type* __last, less<>&) {
912912 __less<_Type> __comp;
913913 std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp);
914914}
915915#endif
916916
917917#if _LIBCPP_STD_VER >= 20
918918template <class _AlgPolicy , class _Type , __enable_if_t <__sort_is_specialized_in_library<_Type>::value, int > = 0 >
919- void __sort_dispatch (_Type* __first, _Type* __last, ranges::less&) {
919+ _LIBCPP_HIDE_FROM_ABI void __sort_dispatch (_Type* __first, _Type* __last, ranges::less&) {
920920 __less<_Type> __comp;
921921 std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp);
922922}
923923#endif
924924
925925template <class _AlgPolicy , class _RandomAccessIterator , class _Comp >
926- inline _LIBCPP_CONSTEXPR_SINCE_CXX20 void
926+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
927927__sort_impl (_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) {
928928 std::__debug_randomize_range<_AlgPolicy>(__first, __last);
929929
@@ -937,13 +937,14 @@ __sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp&
937937}
938938
939939template <class _RandomAccessIterator , class _Comp >
940- inline _LIBCPP_CONSTEXPR_SINCE_CXX20 void
940+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
941941sort (_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) {
942942 std::__sort_impl<_ClassicAlgPolicy>(std::move (__first), std::move (__last), __comp);
943943}
944944
945945template <class _RandomAccessIterator >
946- inline _LIBCPP_CONSTEXPR_SINCE_CXX20 void sort (_RandomAccessIterator __first, _RandomAccessIterator __last) {
946+ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
947+ sort (_RandomAccessIterator __first, _RandomAccessIterator __last) {
947948 std::sort (__first, __last, __less<>());
948949}
949950
0 commit comments