diff --git a/libcxx/src/system_error.cpp b/libcxx/src/system_error.cpp index f187090f75b6c..1cc6b7d7e1e63 100644 --- a/libcxx/src/system_error.cpp +++ b/libcxx/src/system_error.cpp @@ -266,8 +266,15 @@ system_error::~system_error() noexcept { } -void __throw_system_error(int ev, const char* what_arg) { - std::__throw_system_error(error_code(ev, system_category()), what_arg); +void +__throw_system_error(int ev, const char* what_arg) +{ +#ifndef _LIBCPP_HAS_NO_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. + _LIBCPP_VERBOSE_ABORT("system_error was thrown in -fno-exceptions mode with error %i and message \"%s\"", ev, what_arg); +#endif } _LIBCPP_END_NAMESPACE_STD