Skip to content

Commit f76642b

Browse files
committed
[libc++] Remove availability annotations which can't fire anymore
1 parent afd53ed commit f76642b

File tree

9 files changed

+56
-129
lines changed

9 files changed

+56
-129
lines changed

libcxx/include/__configuration/availability.h

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,6 @@
116116
# define _LIBCPP_INTRODUCED_IN_LLVM_9_ATTRIBUTE_PUSH /* nothing */
117117
# define _LIBCPP_INTRODUCED_IN_LLVM_9_ATTRIBUTE_POP /* nothing */
118118

119-
# define _LIBCPP_INTRODUCED_IN_LLVM_4 1
120-
# define _LIBCPP_INTRODUCED_IN_LLVM_4_ATTRIBUTE /* nothing */
121-
122119
#elif defined(__APPLE__)
123120

124121
// clang-format off
@@ -258,14 +255,6 @@
258255
_Pragma("clang attribute pop") \
259256
_Pragma("clang attribute pop")
260257

261-
// LLVM 4
262-
# if defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000
263-
# define _LIBCPP_INTRODUCED_IN_LLVM_4 0
264-
# else
265-
# define _LIBCPP_INTRODUCED_IN_LLVM_4 1
266-
# endif
267-
# define _LIBCPP_INTRODUCED_IN_LLVM_4_ATTRIBUTE __attribute__((availability(watchos, strict, introduced = 5.0)))
268-
269258
// clang-format on
270259

271260
#else
@@ -277,23 +266,6 @@
277266

278267
#endif
279268

280-
// These macros control the availability of std::bad_optional_access and
281-
// other exception types. These were put in the shared library to prevent
282-
// code bloat from every user program defining the vtable for these exception
283-
// types.
284-
//
285-
// Note that when exceptions are disabled, the methods that normally throw
286-
// these exceptions can be used even on older deployment targets, but those
287-
// methods will abort instead of throwing.
288-
#define _LIBCPP_AVAILABILITY_HAS_BAD_OPTIONAL_ACCESS _LIBCPP_INTRODUCED_IN_LLVM_4
289-
#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS _LIBCPP_INTRODUCED_IN_LLVM_4_ATTRIBUTE
290-
291-
#define _LIBCPP_AVAILABILITY_HAS_BAD_VARIANT_ACCESS _LIBCPP_INTRODUCED_IN_LLVM_4
292-
#define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS _LIBCPP_INTRODUCED_IN_LLVM_4_ATTRIBUTE
293-
294-
#define _LIBCPP_AVAILABILITY_HAS_BAD_ANY_CAST _LIBCPP_INTRODUCED_IN_LLVM_4
295-
#define _LIBCPP_AVAILABILITY_BAD_ANY_CAST _LIBCPP_INTRODUCED_IN_LLVM_4_ATTRIBUTE
296-
297269
// These macros control the availability of all parts of <filesystem> that
298270
// depend on something in the dylib.
299271
#define _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_LIBRARY _LIBCPP_INTRODUCED_IN_LLVM_9
@@ -383,19 +355,6 @@
383355
#define _LIBCPP_AVAILABILITY_HAS_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE _LIBCPP_INTRODUCED_IN_LLVM_21
384356
// No attribute, since we've had bad_function_call::what() in the headers before
385357

386-
// Define availability attributes that depend on _LIBCPP_HAS_EXCEPTIONS.
387-
// Those are defined in terms of the availability attributes above, and
388-
// should not be vendor-specific.
389-
#if !_LIBCPP_HAS_EXCEPTIONS
390-
# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST
391-
# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS
392-
# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS
393-
#else
394-
# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _LIBCPP_AVAILABILITY_BAD_ANY_CAST
395-
# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
396-
# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS
397-
#endif
398-
399358
// Define availability attributes that depend on both
400359
// _LIBCPP_HAS_EXCEPTIONS and _LIBCPP_HAS_RTTI.
401360
#if !_LIBCPP_HAS_EXCEPTIONS || !_LIBCPP_HAS_RTTI

libcxx/include/__fwd/variant.h

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,37 +38,28 @@ using variant_alternative_t = typename variant_alternative<_Ip, _Tp>::type;
3838
inline constexpr size_t variant_npos = static_cast<size_t>(-1);
3939

4040
template <size_t _Ip, class... _Types>
41-
_LIBCPP_HIDE_FROM_ABI
42-
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr variant_alternative_t<_Ip, variant<_Types...>>&
43-
get(variant<_Types...>&);
41+
_LIBCPP_HIDE_FROM_ABI constexpr variant_alternative_t<_Ip, variant<_Types...>>& get(variant<_Types...>&);
4442

4543
template <size_t _Ip, class... _Types>
46-
_LIBCPP_HIDE_FROM_ABI
47-
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr variant_alternative_t<_Ip, variant<_Types...>>&&
48-
get(variant<_Types...>&&);
44+
_LIBCPP_HIDE_FROM_ABI constexpr variant_alternative_t<_Ip, variant<_Types...>>&& get(variant<_Types...>&&);
4945

5046
template <size_t _Ip, class... _Types>
51-
_LIBCPP_HIDE_FROM_ABI
52-
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const variant_alternative_t<_Ip, variant<_Types...>>&
53-
get(const variant<_Types...>&);
47+
_LIBCPP_HIDE_FROM_ABI constexpr const variant_alternative_t<_Ip, variant<_Types...>>& get(const variant<_Types...>&);
5448

5549
template <size_t _Ip, class... _Types>
56-
_LIBCPP_HIDE_FROM_ABI
57-
_LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const variant_alternative_t<_Ip, variant<_Types...>>&&
58-
get(const variant<_Types...>&&);
50+
_LIBCPP_HIDE_FROM_ABI constexpr const variant_alternative_t<_Ip, variant<_Types...>>&& get(const variant<_Types...>&&);
5951

6052
template <class _Tp, class... _Types>
61-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Tp& get(variant<_Types...>&);
53+
_LIBCPP_HIDE_FROM_ABI constexpr _Tp& get(variant<_Types...>&);
6254

6355
template <class _Tp, class... _Types>
64-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr _Tp&& get(variant<_Types...>&&);
56+
_LIBCPP_HIDE_FROM_ABI constexpr _Tp&& get(variant<_Types...>&&);
6557

6658
template <class _Tp, class... _Types>
67-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const _Tp& get(const variant<_Types...>&);
59+
_LIBCPP_HIDE_FROM_ABI constexpr const _Tp& get(const variant<_Types...>&);
6860

6961
template <class _Tp, class... _Types>
70-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS constexpr const _Tp&&
71-
get(const variant<_Types...>&&);
62+
_LIBCPP_HIDE_FROM_ABI constexpr const _Tp&& get(const variant<_Types...>&&);
7263

7364
#endif // _LIBCPP_STD_VER >= 17
7465

libcxx/include/any

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ _LIBCPP_PUSH_MACROS
120120
# include <__undef_macros>
121121

122122
_LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD
123-
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
124-
class _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_AVAILABILITY_BAD_ANY_CAST bad_any_cast : public bad_cast {
123+
class _LIBCPP_EXPORTED_FROM_ABI bad_any_cast : public bad_cast {
125124
public:
126125
const char* what() const _NOEXCEPT override;
127126
};
@@ -132,7 +131,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
132131

133132
# if _LIBCPP_STD_VER >= 17
134133

135-
[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST void __throw_bad_any_cast() {
134+
[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_any_cast() {
136135
# if _LIBCPP_HAS_EXCEPTIONS
137136
throw bad_any_cast();
138137
# else
@@ -521,7 +520,7 @@ inline _LIBCPP_HIDE_FROM_ABI any make_any(initializer_list<_Up> __il, _Args&&...
521520
}
522521

523522
template <class _ValueType>
524-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any const& __v) {
523+
inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any const& __v) {
525524
using _RawValueType = __remove_cvref_t<_ValueType>;
526525
static_assert(is_constructible<_ValueType, _RawValueType const&>::value,
527526
"ValueType is required to be a const lvalue reference "
@@ -533,7 +532,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType
533532
}
534533

535534
template <class _ValueType>
536-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any& __v) {
535+
inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any& __v) {
537536
using _RawValueType = __remove_cvref_t<_ValueType>;
538537
static_assert(is_constructible<_ValueType, _RawValueType&>::value,
539538
"ValueType is required to be an lvalue reference "
@@ -545,7 +544,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType
545544
}
546545

547546
template <class _ValueType>
548-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any&& __v) {
547+
inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any&& __v) {
549548
using _RawValueType = __remove_cvref_t<_ValueType>;
550549
static_assert(is_constructible<_ValueType, _RawValueType>::value,
551550
"ValueType is required to be an rvalue reference "

libcxx/include/optional

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ _LIBCPP_PUSH_MACROS
247247
_LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD
248248
_LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS
249249

250-
class _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access : public exception {
250+
class _LIBCPP_EXPORTED_FROM_ABI bad_optional_access : public exception {
251251
public:
252252
_LIBCPP_HIDE_FROM_ABI bad_optional_access() _NOEXCEPT = default;
253253
_LIBCPP_HIDE_FROM_ABI bad_optional_access(const bad_optional_access&) _NOEXCEPT = default;
@@ -264,8 +264,7 @@ _LIBCPP_END_UNVERSIONED_NAMESPACE_STD
264264

265265
_LIBCPP_BEGIN_NAMESPACE_STD
266266

267-
[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS void
268-
__throw_bad_optional_access() {
267+
[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_optional_access() {
269268
# if _LIBCPP_HAS_EXCEPTIONS
270269
throw bad_optional_access();
271270
# else
@@ -828,25 +827,25 @@ public:
828827
using __base::__get;
829828
using __base::has_value;
830829

831-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr value_type const& value() const& {
830+
_LIBCPP_HIDE_FROM_ABI constexpr value_type const& value() const& {
832831
if (!this->has_value())
833832
std::__throw_bad_optional_access();
834833
return this->__get();
835834
}
836835

837-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr value_type& value() & {
836+
_LIBCPP_HIDE_FROM_ABI constexpr value_type& value() & {
838837
if (!this->has_value())
839838
std::__throw_bad_optional_access();
840839
return this->__get();
841840
}
842841

843-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr value_type&& value() && {
842+
_LIBCPP_HIDE_FROM_ABI constexpr value_type&& value() && {
844843
if (!this->has_value())
845844
std::__throw_bad_optional_access();
846845
return std::move(this->__get());
847846
}
848847

849-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr value_type const&& value() const&& {
848+
_LIBCPP_HIDE_FROM_ABI constexpr value_type const&& value() const&& {
850849
if (!this->has_value())
851850
std::__throw_bad_optional_access();
852851
return std::move(this->__get());
@@ -868,7 +867,7 @@ public:
868867

869868
# if _LIBCPP_STD_VER >= 23
870869
template <class _Func>
871-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto and_then(_Func&& __f) & {
870+
_LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) & {
872871
using _Up = invoke_result_t<_Func, value_type&>;
873872
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
874873
"Result of f(value()) must be a specialization of std::optional");
@@ -878,7 +877,7 @@ public:
878877
}
879878

880879
template <class _Func>
881-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto and_then(_Func&& __f) const& {
880+
_LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const& {
882881
using _Up = invoke_result_t<_Func, const value_type&>;
883882
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
884883
"Result of f(value()) must be a specialization of std::optional");
@@ -888,7 +887,7 @@ public:
888887
}
889888

890889
template <class _Func>
891-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto and_then(_Func&& __f) && {
890+
_LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) && {
892891
using _Up = invoke_result_t<_Func, value_type&&>;
893892
static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
894893
"Result of f(std::move(value())) must be a specialization of std::optional");
@@ -908,7 +907,7 @@ public:
908907
}
909908

910909
template <class _Func>
911-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto transform(_Func&& __f) & {
910+
_LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) & {
912911
using _Up = remove_cv_t<invoke_result_t<_Func, value_type&>>;
913912
static_assert(!is_array_v<_Up>, "Result of f(value()) should not be an Array");
914913
static_assert(!is_same_v<_Up, in_place_t>, "Result of f(value()) should not be std::in_place_t");
@@ -920,7 +919,7 @@ public:
920919
}
921920

922921
template <class _Func>
923-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto transform(_Func&& __f) const& {
922+
_LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const& {
924923
using _Up = remove_cv_t<invoke_result_t<_Func, const value_type&>>;
925924
static_assert(!is_array_v<_Up>, "Result of f(value()) should not be an Array");
926925
static_assert(!is_same_v<_Up, in_place_t>, "Result of f(value()) should not be std::in_place_t");
@@ -932,7 +931,7 @@ public:
932931
}
933932

934933
template <class _Func>
935-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto transform(_Func&& __f) && {
934+
_LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) && {
936935
using _Up = remove_cv_t<invoke_result_t<_Func, value_type&&>>;
937936
static_assert(!is_array_v<_Up>, "Result of f(std::move(value())) should not be an Array");
938937
static_assert(!is_same_v<_Up, in_place_t>, "Result of f(std::move(value())) should not be std::in_place_t");
@@ -944,7 +943,7 @@ public:
944943
}
945944

946945
template <class _Func>
947-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto transform(_Func&& __f) const&& {
946+
_LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&& {
948947
using _Up = remove_cvref_t<invoke_result_t<_Func, const value_type&&>>;
949948
static_assert(!is_array_v<_Up>, "Result of f(std::move(value())) should not be an Array");
950949
static_assert(!is_same_v<_Up, in_place_t>, "Result of f(std::move(value())) should not be std::in_place_t");

0 commit comments

Comments
 (0)