Skip to content

Commit 65a7eb3

Browse files
committed
[libc++] Remove availability annotations which can't fire anymore
1 parent c41812e commit 65a7eb3

File tree

9 files changed

+55
-127
lines changed

9 files changed

+55
-127
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 & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ _LIBCPP_PUSH_MACROS
120120
# include <__undef_macros>
121121

122122
_LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD
123-
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 {
124124
public:
125125
const char* what() const _NOEXCEPT override;
126126
};
@@ -130,7 +130,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
130130

131131
# if _LIBCPP_STD_VER >= 17
132132

133-
[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST void __throw_bad_any_cast() {
133+
[[noreturn]] inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_any_cast() {
134134
# if _LIBCPP_HAS_EXCEPTIONS
135135
throw bad_any_cast();
136136
# else
@@ -519,7 +519,7 @@ inline _LIBCPP_HIDE_FROM_ABI any make_any(initializer_list<_Up> __il, _Args&&...
519519
}
520520

521521
template <class _ValueType>
522-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any const& __v) {
522+
inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any const& __v) {
523523
using _RawValueType = __remove_cvref_t<_ValueType>;
524524
static_assert(is_constructible<_ValueType, _RawValueType const&>::value,
525525
"ValueType is required to be a const lvalue reference "
@@ -531,7 +531,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType
531531
}
532532

533533
template <class _ValueType>
534-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any& __v) {
534+
inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any& __v) {
535535
using _RawValueType = __remove_cvref_t<_ValueType>;
536536
static_assert(is_constructible<_ValueType, _RawValueType&>::value,
537537
"ValueType is required to be an lvalue reference "
@@ -543,7 +543,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType
543543
}
544544

545545
template <class _ValueType>
546-
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _ValueType any_cast(any&& __v) {
546+
inline _LIBCPP_HIDE_FROM_ABI _ValueType any_cast(any&& __v) {
547547
using _RawValueType = __remove_cvref_t<_ValueType>;
548548
static_assert(is_constructible<_ValueType, _RawValueType>::value,
549549
"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
namespace std // purposefully not using versioning namespace
248248
{
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;
@@ -263,8 +263,7 @@ public:
263263

264264
_LIBCPP_BEGIN_NAMESPACE_STD
265265

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

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

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

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

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

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

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

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

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

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

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

945944
template <class _Func>
946-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS constexpr auto transform(_Func&& __f) const&& {
945+
_LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&& {
947946
using _Up = remove_cvref_t<invoke_result_t<_Func, const value_type&&>>;
948947
static_assert(!is_array_v<_Up>, "Result of f(std::move(value())) should not be an Array");
949948
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)