[libcxx-commits] [PATCH] D84394: [libcxx] Adjust trivial_abi tests for C++03 and C++11 testing
Mikhail Maltsev via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jul 23 04:58:41 PDT 2020
miyuki created this revision.
miyuki added reviewers: ldionne, oontvoo, EricWF.
Herald added subscribers: libcxx-commits, dexonsmith.
Herald added a project: libc++.
Herald added a reviewer: libc++.
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.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D84394
Files:
libcxx/test/libcxx/memory/trivial_abi/shared_ptr_arg.pass.cpp
libcxx/test/libcxx/memory/trivial_abi/unique_ptr_arg.pass.cpp
libcxx/test/libcxx/memory/trivial_abi/unique_ptr_array.pass.cpp
libcxx/test/libcxx/memory/trivial_abi/unique_ptr_destruction_order.pass.cpp
libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
Index: libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
===================================================================
--- libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
+++ libcxx/test/libcxx/memory/trivial_abi/unique_ptr_ret.pass.cpp
@@ -28,7 +28,7 @@
__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;
Index: libcxx/test/libcxx/memory/trivial_abi/unique_ptr_destruction_order.pass.cpp
===================================================================
--- libcxx/test/libcxx/memory/trivial_abi/unique_ptr_destruction_order.pass.cpp
+++ libcxx/test/libcxx/memory/trivial_abi/unique_ptr_destruction_order.pass.cpp
@@ -53,7 +53,7 @@
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.
Index: libcxx/test/libcxx/memory/trivial_abi/unique_ptr_array.pass.cpp
===================================================================
--- libcxx/test/libcxx/memory/trivial_abi/unique_ptr_array.pass.cpp
+++ libcxx/test/libcxx/memory/trivial_abi/unique_ptr_array.pass.cpp
@@ -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>
Index: libcxx/test/libcxx/memory/trivial_abi/unique_ptr_arg.pass.cpp
===================================================================
--- libcxx/test/libcxx/memory/trivial_abi/unique_ptr_arg.pass.cpp
+++ libcxx/test/libcxx/memory/trivial_abi/unique_ptr_arg.pass.cpp
@@ -45,7 +45,7 @@
//
// 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);
Index: libcxx/test/libcxx/memory/trivial_abi/shared_ptr_arg.pass.cpp
===================================================================
--- libcxx/test/libcxx/memory/trivial_abi/shared_ptr_arg.pass.cpp
+++ libcxx/test/libcxx/memory/trivial_abi/shared_ptr_arg.pass.cpp
@@ -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>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D84394.280076.patch
Type: text/x-patch
Size: 2892 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20200723/e16ff527/attachment-0001.bin>
More information about the libcxx-commits
mailing list