[libc++] Sort _LIBCPP_INTRODUCED_IN_LLVM_<X> usages in reverse chronological order (#176857)
I noticed that the various `_LIBCPP_INTRODUCED_IN_LLVM_<ver>` usages in `availability.h` were defined a bit all over the place. I think it'd make the most sense to sort them in reverse chronological order (like their definitions).
This commit is contained in:
parent
4baab258b8
commit
783fd2f9d5
@ -220,51 +220,20 @@
|
||||
#define _LIBCPP_AVAILABILITY_HAS_NEW_SYNC _LIBCPP_INTRODUCED_IN_LLVM_22
|
||||
#define _LIBCPP_AVAILABILITY_NEW_SYNC _LIBCPP_INTRODUCED_IN_LLVM_22_ATTRIBUTE
|
||||
|
||||
// Enable additional explicit instantiations of iostreams components. This
|
||||
// reduces the number of weak definitions generated in programs that use
|
||||
// iostreams by providing a single strong definition in the shared library.
|
||||
//
|
||||
// TODO: Enable additional explicit instantiations on GCC once it supports exclude_from_explicit_instantiation,
|
||||
// or once libc++ doesn't use the attribute anymore.
|
||||
// TODO: Enable them on Windows once https://llvm.org/PR41018 has been fixed.
|
||||
#if !defined(_LIBCPP_COMPILER_GCC) && !defined(_WIN32)
|
||||
# define _LIBCPP_AVAILABILITY_HAS_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 _LIBCPP_INTRODUCED_IN_LLVM_12
|
||||
#else
|
||||
# define _LIBCPP_AVAILABILITY_HAS_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 0
|
||||
#endif
|
||||
// This controls whether `std::__hash_memory` is available in the dylib, which
|
||||
// is used for some `std::hash` specializations.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_HASH_MEMORY _LIBCPP_INTRODUCED_IN_LLVM_21
|
||||
// No attribute, since we've had hash in the headers before
|
||||
|
||||
// This controls the availability of floating-point std::to_chars functions.
|
||||
// This controls whether we provide a message for `bad_function_call::what()` that specific to `std::bad_function_call`.
|
||||
// See https://wg21.link/LWG2233. This requires `std::bad_function_call::what()` to be available in the dylib.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE _LIBCPP_INTRODUCED_IN_LLVM_21
|
||||
// No attribute, since we've had bad_function_call::what() in the headers before
|
||||
|
||||
// This controls the availability of floating-point std::from_chars functions.
|
||||
// These overloads were added later than the integer overloads.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_14
|
||||
#define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_14_ATTRIBUTE
|
||||
|
||||
// This controls whether the library claims to provide a default verbose
|
||||
// termination function, and consequently whether the headers will try
|
||||
// to use it when the mechanism isn't overriden at compile-time.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT _LIBCPP_INTRODUCED_IN_LLVM_15
|
||||
#define _LIBCPP_AVAILABILITY_VERBOSE_ABORT _LIBCPP_INTRODUCED_IN_LLVM_15_ATTRIBUTE
|
||||
|
||||
// This controls the availability of the C++17 std::pmr library,
|
||||
// which is implemented in large part in the built library.
|
||||
//
|
||||
// TODO: Enable std::pmr markup once https://llvm.org/PR40340 has been fixed
|
||||
// Until then, it is possible for folks to try to use `std::pmr` when back-deploying to targets that don't support
|
||||
// it and it'll be a load-time error, but we don't have a good alternative because the library won't compile if we
|
||||
// use availability annotations until that bug has been fixed.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_PMR _LIBCPP_INTRODUCED_IN_LLVM_16
|
||||
#define _LIBCPP_AVAILABILITY_PMR
|
||||
|
||||
// These macros controls the availability of __cxa_init_primary_exception
|
||||
// in the built library, which std::make_exception_ptr might use
|
||||
// (see libcxx/include/__exception/exception_ptr.h).
|
||||
#define _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION _LIBCPP_INTRODUCED_IN_LLVM_18
|
||||
#define _LIBCPP_AVAILABILITY_INIT_PRIMARY_EXCEPTION _LIBCPP_INTRODUCED_IN_LLVM_18_ATTRIBUTE
|
||||
|
||||
// This controls the availability of C++23 <print>, which
|
||||
// has a dependency on the built library (it needs access to
|
||||
// the underlying buffer types of std::cout, std::cerr, and std::clog.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_PRINT _LIBCPP_INTRODUCED_IN_LLVM_18
|
||||
#define _LIBCPP_AVAILABILITY_PRINT _LIBCPP_INTRODUCED_IN_LLVM_18_ATTRIBUTE
|
||||
#define _LIBCPP_AVAILABILITY_HAS_FROM_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_20
|
||||
#define _LIBCPP_AVAILABILITY_FROM_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_20_ATTRIBUTE
|
||||
|
||||
// This controls the availability of the C++20 time zone database.
|
||||
// The parser code is built in the library.
|
||||
@ -280,20 +249,51 @@
|
||||
#define _LIBCPP_AVAILABILITY_HAS_BAD_EXPECTED_ACCESS_KEY_FUNCTION _LIBCPP_INTRODUCED_IN_LLVM_19
|
||||
#define _LIBCPP_AVAILABILITY_BAD_EXPECTED_ACCESS_KEY_FUNCTION _LIBCPP_INTRODUCED_IN_LLVM_19_ATTRIBUTE
|
||||
|
||||
// This controls the availability of floating-point std::from_chars functions.
|
||||
// These macros controls the availability of __cxa_init_primary_exception
|
||||
// in the built library, which std::make_exception_ptr might use
|
||||
// (see libcxx/include/__exception/exception_ptr.h).
|
||||
#define _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION _LIBCPP_INTRODUCED_IN_LLVM_18
|
||||
#define _LIBCPP_AVAILABILITY_INIT_PRIMARY_EXCEPTION _LIBCPP_INTRODUCED_IN_LLVM_18_ATTRIBUTE
|
||||
|
||||
// This controls the availability of C++23 <print>, which
|
||||
// has a dependency on the built library (it needs access to
|
||||
// the underlying buffer types of std::cout, std::cerr, and std::clog.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_PRINT _LIBCPP_INTRODUCED_IN_LLVM_18
|
||||
#define _LIBCPP_AVAILABILITY_PRINT _LIBCPP_INTRODUCED_IN_LLVM_18_ATTRIBUTE
|
||||
|
||||
// This controls the availability of the C++17 std::pmr library,
|
||||
// which is implemented in large part in the built library.
|
||||
//
|
||||
// TODO: Enable std::pmr markup once https://llvm.org/PR40340 has been fixed
|
||||
// Until then, it is possible for folks to try to use `std::pmr` when back-deploying to targets that don't support
|
||||
// it and it'll be a load-time error, but we don't have a good alternative because the library won't compile if we
|
||||
// use availability annotations until that bug has been fixed.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_PMR _LIBCPP_INTRODUCED_IN_LLVM_16
|
||||
#define _LIBCPP_AVAILABILITY_PMR
|
||||
|
||||
// This controls whether the library claims to provide a default verbose
|
||||
// termination function, and consequently whether the headers will try
|
||||
// to use it when the mechanism isn't overriden at compile-time.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_VERBOSE_ABORT _LIBCPP_INTRODUCED_IN_LLVM_15
|
||||
#define _LIBCPP_AVAILABILITY_VERBOSE_ABORT _LIBCPP_INTRODUCED_IN_LLVM_15_ATTRIBUTE
|
||||
|
||||
// This controls the availability of floating-point std::to_chars functions.
|
||||
// These overloads were added later than the integer overloads.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_FROM_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_20
|
||||
#define _LIBCPP_AVAILABILITY_FROM_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_20_ATTRIBUTE
|
||||
#define _LIBCPP_AVAILABILITY_HAS_TO_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_14
|
||||
#define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_INTRODUCED_IN_LLVM_14_ATTRIBUTE
|
||||
|
||||
// This controls whether `std::__hash_memory` is available in the dylib, which
|
||||
// is used for some `std::hash` specializations.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_HASH_MEMORY _LIBCPP_INTRODUCED_IN_LLVM_21
|
||||
// No attribute, since we've had hash in the headers before
|
||||
|
||||
// This controls whether we provide a message for `bad_function_call::what()` that specific to `std::bad_function_call`.
|
||||
// See https://wg21.link/LWG2233. This requires `std::bad_function_call::what()` to be available in the dylib.
|
||||
#define _LIBCPP_AVAILABILITY_HAS_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE _LIBCPP_INTRODUCED_IN_LLVM_21
|
||||
// No attribute, since we've had bad_function_call::what() in the headers before
|
||||
// Enable additional explicit instantiations of iostreams components. This
|
||||
// reduces the number of weak definitions generated in programs that use
|
||||
// iostreams by providing a single strong definition in the shared library.
|
||||
//
|
||||
// TODO: Enable additional explicit instantiations on GCC once it supports exclude_from_explicit_instantiation,
|
||||
// or once libc++ doesn't use the attribute anymore.
|
||||
// TODO: Enable them on Windows once https://llvm.org/PR41018 has been fixed.
|
||||
#if !defined(_LIBCPP_COMPILER_GCC) && !defined(_WIN32)
|
||||
# define _LIBCPP_AVAILABILITY_HAS_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 _LIBCPP_INTRODUCED_IN_LLVM_12
|
||||
#else
|
||||
# define _LIBCPP_AVAILABILITY_HAS_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 0
|
||||
#endif
|
||||
|
||||
// Only define a bunch of symbols in the dylib if we need to be compatible with LLVM 7 headers or older
|
||||
# if defined(_LIBCPP_BUILDING_LIBRARY) && _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 8
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user