Skip to content

Commit c861fe8

Browse files
authored
[libc++] Introduce ABI sensitive areas to avoid requiring _LIBCPP_HIDE_FROM_ABI everywhere (llvm#131156)
This patch introduces `_LIBCPP_{BEGIN,END}_EXPLICIT_ABI_ANNOTATIONS`, which allow us to have implicit annotations for most functions, and just where it's not "hide_from_abi everything" we add explicit annotations. This allows us to drop the `_LIBCPP_HIDE_FROM_ABI` macro from most functions in libc++.
1 parent ad31366 commit c861fe8

File tree

119 files changed

+301
-52
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+301
-52
lines changed

libcxx/include/__algorithm/shuffle.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_randomizer {
6565
#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE) || defined(_LIBCPP_BUILDING_LIBRARY)
6666
class _LIBCPP_EXPORTED_FROM_ABI __rs_default;
6767

68+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
6869
_LIBCPP_EXPORTED_FROM_ABI __rs_default __rs_get();
6970

7071
class _LIBCPP_EXPORTED_FROM_ABI __rs_default {
@@ -90,6 +91,7 @@ class _LIBCPP_EXPORTED_FROM_ABI __rs_default {
9091
};
9192

9293
_LIBCPP_EXPORTED_FROM_ABI __rs_default __rs_get();
94+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
9395

9496
template <class _RandomAccessIterator>
9597
_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void

libcxx/include/__algorithm/sort.h

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
6666
template <class _Compare, class _RandomAccessIterator>
67-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
67+
inline _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.
8080
template <class _Compare, class _RandomAccessIterator>
81-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
81+
inline _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_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
100+
inline _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_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
111+
inline _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 _LIBCPP_HIDE_FROM_ABI void
143+
inline 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 _LIBCPP_HIDE_FROM_ABI void
160+
inline 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 _LIBCPP_HIDE_FROM_ABI void
185+
inline 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 _LIBCPP_HIDE_FROM_ABI void
204+
inline void
205205
__sort5(_RandomAccessIterator __x1,
206206
_RandomAccessIterator __x2,
207207
_RandomAccessIterator __x3,
@@ -227,7 +227,7 @@ __sort5(_RandomAccessIterator __x1,
227227

228228
// Assumes size > 0
229229
template <class _AlgPolicy, class _Compare, class _BidirectionalIterator>
230-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void
230+
_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.
242242
template <class _AlgPolicy, class _Compare, class _BidirectionalIterator>
243-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX26 void
243+
_LIBCPP_CONSTEXPR_SINCE_CXX26 void
244244
__insertion_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) {
245245
using _Ops = _IterOps<_AlgPolicy>;
246246

@@ -270,8 +270,7 @@ __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.
272272
template <class _AlgPolicy, class _Compare, class _RandomAccessIterator>
273-
_LIBCPP_HIDE_FROM_ABI void
274-
__insertion_sort_unguarded(_RandomAccessIterator const __first, _RandomAccessIterator __last, _Compare __comp) {
273+
void __insertion_sort_unguarded(_RandomAccessIterator const __first, _RandomAccessIterator __last, _Compare __comp) {
275274
using _Ops = _IterOps<_AlgPolicy>;
276275
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
277276
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
@@ -298,8 +297,7 @@ __insertion_sort_unguarded(_RandomAccessIterator const __first, _RandomAccessIte
298297
}
299298

300299
template <class _AlgPolicy, class _Comp, class _RandomAccessIterator>
301-
_LIBCPP_HIDE_FROM_ABI bool
302-
__insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) {
300+
bool __insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) {
303301
using _Ops = _IterOps<_AlgPolicy>;
304302

305303
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -352,7 +350,7 @@ __insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator
352350
}
353351

354352
template <class _AlgPolicy, class _RandomAccessIterator>
355-
inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos(
353+
inline void __swap_bitmap_pos(
356354
_RandomAccessIterator __first, _RandomAccessIterator __last, uint64_t& __left_bitset, uint64_t& __right_bitset) {
357355
using _Ops = _IterOps<_AlgPolicy>;
358356
typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -370,7 +368,7 @@ inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos(
370368
template <class _Compare,
371369
class _RandomAccessIterator,
372370
class _ValueType = typename iterator_traits<_RandomAccessIterator>::value_type>
373-
inline _LIBCPP_HIDE_FROM_ABI void
371+
inline void
374372
__populate_left_bitset(_RandomAccessIterator __first, _Compare __comp, _ValueType& __pivot, uint64_t& __left_bitset) {
375373
// Possible vectorization. With a proper "-march" flag, the following loop
376374
// will be compiled into a set of SIMD instructions.
@@ -386,7 +384,7 @@ __populate_left_bitset(_RandomAccessIterator __first, _Compare __comp, _ValueTyp
386384
template <class _Compare,
387385
class _RandomAccessIterator,
388386
class _ValueType = typename iterator_traits<_RandomAccessIterator>::value_type>
389-
inline _LIBCPP_HIDE_FROM_ABI void
387+
inline void
390388
__populate_right_bitset(_RandomAccessIterator __lm1, _Compare __comp, _ValueType& __pivot, uint64_t& __right_bitset) {
391389
// Possible vectorization. With a proper "-march" flag, the following loop
392390
// will be compiled into a set of SIMD instructions.
@@ -403,7 +401,7 @@ template <class _AlgPolicy,
403401
class _Compare,
404402
class _RandomAccessIterator,
405403
class _ValueType = typename iterator_traits<_RandomAccessIterator>::value_type>
406-
inline _LIBCPP_HIDE_FROM_ABI void __bitset_partition_partial_blocks(
404+
inline void __bitset_partition_partial_blocks(
407405
_RandomAccessIterator& __first,
408406
_RandomAccessIterator& __lm1,
409407
_Compare __comp,
@@ -450,7 +448,7 @@ inline _LIBCPP_HIDE_FROM_ABI void __bitset_partition_partial_blocks(
450448
}
451449

452450
template <class _AlgPolicy, class _RandomAccessIterator>
453-
inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos_within(
451+
inline void __swap_bitmap_pos_within(
454452
_RandomAccessIterator& __first, _RandomAccessIterator& __lm1, uint64_t& __left_bitset, uint64_t& __right_bitset) {
455453
using _Ops = _IterOps<_AlgPolicy>;
456454
typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -491,7 +489,7 @@ inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos_within(
491489
// __bitset_partition uses bitsets for storing outcomes of the comparisons
492490
// between the pivot and other elements.
493491
template <class _AlgPolicy, class _RandomAccessIterator, class _Compare>
494-
_LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool>
492+
std::pair<_RandomAccessIterator, bool>
495493
__bitset_partition(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {
496494
using _Ops = _IterOps<_AlgPolicy>;
497495
typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type;
@@ -583,7 +581,7 @@ __bitset_partition(_RandomAccessIterator __first, _RandomAccessIterator __last,
583581
// the provided range is already sorted, false otherwise. We assume that the
584582
// length of the range is at least three elements.
585583
template <class _AlgPolicy, class _RandomAccessIterator, class _Compare>
586-
_LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool>
584+
std::pair<_RandomAccessIterator, bool>
587585
__partition_with_equals_on_right(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {
588586
using _Ops = _IterOps<_AlgPolicy>;
589587
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -651,7 +649,7 @@ __partition_with_equals_on_right(_RandomAccessIterator __first, _RandomAccessIte
651649
// Similar to the above function. Elements equivalent to the pivot are put to
652650
// the left of the pivot. Returns the iterator to the pivot element.
653651
template <class _AlgPolicy, class _RandomAccessIterator, class _Compare>
654-
_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator
652+
_RandomAccessIterator
655653
__partition_with_equals_on_left(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) {
656654
using _Ops = _IterOps<_AlgPolicy>;
657655
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
@@ -828,6 +826,7 @@ void __introsort(_RandomAccessIterator __first,
828826
}
829827
}
830828

829+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
831830
template <class _Comp, class _RandomAccessIterator>
832831
void __sort(_RandomAccessIterator, _RandomAccessIterator, _Comp);
833832

@@ -856,9 +855,10 @@ extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less<float>&, float*>(fl
856855
extern template _LIBCPP_EXPORTED_FROM_ABI void __sort<__less<double>&, double*>(double*, double*, __less<double>&);
857856
extern template _LIBCPP_EXPORTED_FROM_ABI void
858857
__sort<__less<long double>&, long double*>(long double*, long double*, __less<long double>&);
858+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
859859

860860
template <class _AlgPolicy, class _RandomAccessIterator, class _Comp>
861-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
861+
_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

897897
template <class _AlgPolicy, class _Type, __enable_if_t<__sort_is_specialized_in_library<_Type>::value, int> = 0>
898-
_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, __less<>&) {
898+
void __sort_dispatch(_Type* __first, _Type* __last, __less<>&) {
899899
__less<_Type> __comp;
900900
std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp);
901901
}
902902

903903
template <class _AlgPolicy, class _Type, __enable_if_t<__sort_is_specialized_in_library<_Type>::value, int> = 0>
904-
_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, less<_Type>&) {
904+
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
910910
template <class _AlgPolicy, class _Type, __enable_if_t<__sort_is_specialized_in_library<_Type>::value, int> = 0>
911-
_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, less<>&) {
911+
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
918918
template <class _AlgPolicy, class _Type, __enable_if_t<__sort_is_specialized_in_library<_Type>::value, int> = 0>
919-
_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, ranges::less&) {
919+
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

925925
template <class _AlgPolicy, class _RandomAccessIterator, class _Comp>
926-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
926+
inline _LIBCPP_CONSTEXPR_SINCE_CXX20 void
927927
__sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) {
928928
std::__debug_randomize_range<_AlgPolicy>(__first, __last);
929929

@@ -937,14 +937,13 @@ __sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp&
937937
}
938938

939939
template <class _RandomAccessIterator, class _Comp>
940-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
940+
inline _LIBCPP_CONSTEXPR_SINCE_CXX20 void
941941
sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) {
942942
std::__sort_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp);
943943
}
944944

945945
template <class _RandomAccessIterator>
946-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
947-
sort(_RandomAccessIterator __first, _RandomAccessIterator __last) {
946+
inline _LIBCPP_CONSTEXPR_SINCE_CXX20 void sort(_RandomAccessIterator __first, _RandomAccessIterator __last) {
948947
std::sort(__first, __last, __less<>());
949948
}
950949

libcxx/include/__atomic/atomic_sync.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ struct __atomic_waitable< _Tp,
5858
#if _LIBCPP_STD_VER >= 20
5959
# if _LIBCPP_HAS_THREADS
6060

61+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
6162
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile*) _NOEXCEPT;
6263
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(void const volatile*) _NOEXCEPT;
6364
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t
@@ -73,6 +74,7 @@ _LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t
7374
__libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile*) _NOEXCEPT;
7475
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void
7576
__libcpp_atomic_wait(__cxx_atomic_contention_t const volatile*, __cxx_contention_t) _NOEXCEPT;
77+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
7678

7779
template <class _AtomicWaitable, class _Poll>
7880
struct __atomic_wait_backoff_impl {

libcxx/include/__charconv/from_chars_floating_point.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ struct __from_chars_result {
3535
errc __ec;
3636
};
3737

38+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
3839
template <class _Fp>
3940
_LIBCPP_EXPORTED_FROM_ABI __from_chars_result<_Fp> __from_chars_floating_point(
4041
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
@@ -44,6 +45,7 @@ extern template __from_chars_result<float> __from_chars_floating_point(
4445

4546
extern template __from_chars_result<double> __from_chars_floating_point(
4647
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
48+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
4749

4850
template <class _Fp>
4951
_LIBCPP_HIDE_FROM_ABI from_chars_result

libcxx/include/__charconv/to_chars_floating_point.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
# pragma GCC system_header
1919
#endif
2020

21-
_LIBCPP_BEGIN_NAMESPACE_STD
22-
2321
#if _LIBCPP_STD_VER >= 17
2422

23+
_LIBCPP_BEGIN_NAMESPACE_STD
24+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
25+
2526
_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_EXPORTED_FROM_ABI to_chars_result
2627
to_chars(char* __first, char* __last, float __value);
2728

@@ -48,8 +49,10 @@ to_chars(char* __first, char* __last, double __value, chars_format __fmt, int __
4849

4950
_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_EXPORTED_FROM_ABI to_chars_result
5051
to_chars(char* __first, char* __last, long double __value, chars_format __fmt, int __precision);
51-
#endif // _LIBCPP_STD_VER >= 17
5252

53+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
5354
_LIBCPP_END_NAMESPACE_STD
5455

56+
#endif // _LIBCPP_STD_VER >= 17
57+
5558
#endif // _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H

libcxx/include/__chrono/exception.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
# endif
3232

3333
_LIBCPP_BEGIN_NAMESPACE_STD
34+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
3435

3536
# if _LIBCPP_STD_VER >= 20
3637

@@ -128,6 +129,7 @@ template <class _Duration>
128129

129130
# endif // _LIBCPP_STD_VER >= 20
130131

132+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
131133
_LIBCPP_END_NAMESPACE_STD
132134

133135
#endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB

libcxx/include/__chrono/file_clock.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ _LIBCPP_END_NAMESPACE_STD
4646

4747
#ifndef _LIBCPP_CXX03_LANG
4848
_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
49+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
4950
struct _FilesystemClock {
5051
# if _LIBCPP_HAS_INT128
5152
typedef __int128_t rep;
@@ -74,6 +75,7 @@ struct _FilesystemClock {
7475
}
7576
# endif // _LIBCPP_STD_VER >= 20
7677
};
78+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
7779
_LIBCPP_END_NAMESPACE_FILESYSTEM
7880
#endif // !_LIBCPP_CXX03_LANG
7981

libcxx/include/__chrono/steady_clock.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#endif
2020

2121
_LIBCPP_BEGIN_NAMESPACE_STD
22+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
2223

2324
namespace chrono {
2425

@@ -37,6 +38,7 @@ class _LIBCPP_EXPORTED_FROM_ABI steady_clock {
3738

3839
} // namespace chrono
3940

41+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
4042
_LIBCPP_END_NAMESPACE_STD
4143

4244
#endif // _LIBCPP___CHRONO_STEADY_CLOCK_H

libcxx/include/__chrono/system_clock.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#endif
2121

2222
_LIBCPP_BEGIN_NAMESPACE_STD
23+
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
2324

2425
namespace chrono {
2526

@@ -47,6 +48,7 @@ using sys_days = sys_time<days>;
4748

4849
} // namespace chrono
4950

51+
_LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
5052
_LIBCPP_END_NAMESPACE_STD
5153

5254
#endif // _LIBCPP___CHRONO_SYSTEM_CLOCK_H

0 commit comments

Comments
 (0)