forked from OSchip/llvm-project
[libcxx] Adjust trivial_abi tests for C++03 and C++11 testing
This change replaces std::make_unique with manual construction of std::unique_ptr to make the tests compatible with C++11 (std::make_unique is a C++14 feature). libc++ supports std::unique_ptr and std::shared_ptr even in C++03 but with some limitations: unique_ptr_array.pass.cpp and shared_ptr_arg.pass.cpp fail to compile in C++03 mode and need to be disabled. Differential Revision: https://reviews.llvm.org/D84394
This commit is contained in:
parent
b35833b84e
commit
2b89c34784
|
@ -14,6 +14,7 @@
|
|||
|
||||
// There were assertion failures in both parse and codegen, which are fixed in clang 11.
|
||||
// UNSUPPORTED: gcc, clang-4, clang-5, clang-6, clang-7, clang-8, clang-9, clang-10
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
#include <memory>
|
||||
#include <cassert>
|
||||
|
|
|
@ -45,7 +45,7 @@ int main(int, char**) {
|
|||
//
|
||||
// With trivial-abi, expect_1 will see shared == 1 because shared_val is
|
||||
// incremented before get_val returns.
|
||||
expect_1(&shared, get_val(std::make_unique<Node>(&shared)));
|
||||
expect_1(&shared, get_val(std::unique_ptr<Node>(new Node(&shared))));
|
||||
|
||||
// Check that the shared-value is still 1.
|
||||
expect_1(&shared, true);
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
// There were assertion failures in both parse and codegen, which are fixed in clang 11.
|
||||
// UNSUPPORTED: gcc, clang-4, clang-5, clang-6, clang-7, clang-8, clang-9, clang-10
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
#include <memory>
|
||||
#include <cassert>
|
||||
|
|
|
@ -53,7 +53,7 @@ int main(int, char**) {
|
|||
char shared_buf[3] = {'0', '0', '0'};
|
||||
int cur_idx = 0;
|
||||
|
||||
func(A(shared_buf, &cur_idx), std::make_unique<B>(shared_buf, &cur_idx),
|
||||
func(A(shared_buf, &cur_idx), std::unique_ptr<B>(new B(shared_buf, &cur_idx)),
|
||||
C(shared_buf, &cur_idx));
|
||||
|
||||
// With trivial_abi, the std::unique_ptr<B> arg is always destructed first.
|
||||
|
|
|
@ -28,7 +28,7 @@ struct Node {
|
|||
__attribute__((noinline)) std::unique_ptr<Node> make_val(void** local_addr) {
|
||||
call_something();
|
||||
|
||||
auto ret = std::make_unique<Node>();
|
||||
auto ret = std::unique_ptr<Node>(new Node);
|
||||
|
||||
// Capture the local address of ret.
|
||||
*local_addr = &ret;
|
||||
|
|
Loading…
Reference in New Issue