Move _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS macro to build system

_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.

https://reviews.llvm.org/D46056
Patch from Taiju Tsuiku <tzik@chromium.org>!

llvm-svn: 331150
This commit is contained in:
Nico Weber 2018-04-29 23:05:11 +00:00
parent 5731558979
commit 297ec32b86
3 changed files with 4 additions and 7 deletions

View File

@ -387,6 +387,10 @@ endif()
# 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()

View File

@ -11,8 +11,6 @@
//
//===----------------------------------------------------------------------===//
#define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS
#include "cxxabi.h"
#include <exception> // for std::terminate

View File

@ -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>