[PATCH] D46056: Move _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS macro to build system
Taiju Tsuiki via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 25 06:32:48 PDT 2018
tzik created this revision.
tzik added reviewers: rsmith, thakis.
Herald added subscribers: cfe-commits, mgorny.
_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS is currently used to
bring back std::unexpected, which is removed in C++17, but still needed
for libc++abi for backward compatibility.
This macro used to define in cxa_exception.cpp only, but actually
needed for all sources that touches exceptions.
So, a build-system-level macro is better fit to define this macro.
Repository:
rCXXA libc++abi
https://reviews.llvm.org/D46056
Files:
CMakeLists.txt
src/cxa_exception.cpp
test/test_exception_storage.pass.cpp
Index: test/test_exception_storage.pass.cpp
===================================================================
--- test/test_exception_storage.pass.cpp
+++ test/test_exception_storage.pass.cpp
@@ -7,11 +7,6 @@
//
//===----------------------------------------------------------------------===//
-// FIXME: cxa_exception.hpp directly references `std::unexpected` and friends.
-// This breaks this test when compiled in C++17. For now fix this by manually
-// re-enabling the STL functions.
-#define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS
-
#include <cstdlib>
#include <algorithm>
#include <iostream>
Index: src/cxa_exception.cpp
===================================================================
--- src/cxa_exception.cpp
+++ src/cxa_exception.cpp
@@ -11,8 +11,6 @@
//
//===----------------------------------------------------------------------===//
-#define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS
-
#include "cxxabi.h"
#include <exception> // for std::terminate
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -387,6 +387,10 @@
# Prevent libc++abi from having library dependencies on libc++
add_definitions(-D_LIBCPP_DISABLE_EXTERN_TEMPLATE)
+# Bring back `std::unexpected`, which is removed in C++17, to support
+# pre-C++17.
+add_definitions(-D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS)
+
if (MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D46056.143915.patch
Type: text/x-patch
Size: 1499 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180425/5f74317f/attachment-0001.bin>
More information about the cfe-commits
mailing list