aboutsummaryrefslogtreecommitdiff
path: root/libcxx/src/system_error.cpp
diff options
context:
space:
mode:
authorNikolas Klauser <nikolasklauser@berlin.de>2024-10-12 09:49:52 +0200
committerGitHub <noreply@github.com>2024-10-12 09:49:52 +0200
commitba87515fea90b5d55836a8e3be63a7e683ce299d (patch)
tree25b36e09d01ff31f453e6a8141629a52a7f673bb /libcxx/src/system_error.cpp
parentdbd197118db597970a5a9c5688c5e0bb01948ebb (diff)
downloadllvm-ba87515fea90b5d55836a8e3be63a7e683ce299d.zip
llvm-ba87515fea90b5d55836a8e3be63a7e683ce299d.tar.gz
llvm-ba87515fea90b5d55836a8e3be63a7e683ce299d.tar.bz2
[libc++][RFC] Always define internal feature test macros (#89178)
Currently, the library-internal feature test macros are only defined if the feature is not available, and always have the prefix `_LIBCPP_HAS_NO_`. This patch changes that, so that they are always defined and have the prefix `_LIBCPP_HAS_` instead. This changes the canonical use of these macros to `#if _LIBCPP_HAS_FEATURE`, which means that using an undefined macro (e.g. due to a missing include) is diagnosed now. While this is rather unlikely currently, a similar change in `<__configuration/availability.h>` caught a few bugs. This also improves readability, since it removes the double-negation of `#ifndef _LIBCPP_HAS_NO_FEATURE`. The current patch only touches the macros defined in `<__config>`. If people are happy with this approach, I'll make a follow-up PR to also change the macros defined in `<__config_site>`.
Diffstat (limited to 'libcxx/src/system_error.cpp')
-rw-r--r--libcxx/src/system_error.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libcxx/src/system_error.cpp b/libcxx/src/system_error.cpp
index 3367bd5..4767293 100644
--- a/libcxx/src/system_error.cpp
+++ b/libcxx/src/system_error.cpp
@@ -211,7 +211,7 @@ system_error::system_error(int ev, const error_category& ecat)
system_error::~system_error() noexcept {}
void __throw_system_error(int ev, const char* what_arg) {
-#ifndef _LIBCPP_HAS_NO_EXCEPTIONS
+#if _LIBCPP_HAS_EXCEPTIONS
std::__throw_system_error(error_code(ev, system_category()), what_arg);
#else
// The above could also handle the no-exception case, but for size, avoid referencing system_category() unnecessarily.