Fix test failures caused by new/delete calls getting optimized away

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@296813 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2017-03-02 21:16:35 +00:00
parent c6748b28c4
commit f282bc8767
5 changed files with 13 additions and 5 deletions

View File

@@ -46,9 +46,11 @@ void operator delete[](void* p, const std::nothrow_t&) TEST_NOEXCEPT
// selected.
struct A { ~A() {} };
A *volatile x;
int main()
{
A* x = new A[3];
x = new A[3];
assert(0 == delete_called);
assert(0 == delete_nothrow_called);

View File

@@ -43,9 +43,11 @@ struct A
~A() {A_constructed = false;}
};
A *volatile ap;
int main()
{
A* ap = new A;
ap = new A;
assert(ap);
assert(A_constructed);
assert(new_called);

View File

@@ -44,9 +44,11 @@ void operator delete(void* p, std::size_t) TEST_NOEXCEPT
std::free(p);
}
int *volatile x;
int main()
{
int *x = new int(42);
x = new int(42);
assert(0 == unsized_delete_called);
assert(0 == unsized_delete_nothrow_called);
assert(0 == sized_delete_called);

View File

@@ -49,9 +49,11 @@ void operator delete(void* p, std::size_t) TEST_NOEXCEPT
std::free(p);
}
int *volatile x;
int main()
{
int *x = new int(42);
x = new int(42);
assert(0 == unsized_delete_called);
assert(0 == unsized_delete_nothrow_called);
assert(0 == sized_delete_called);

View File

@@ -17,7 +17,7 @@
// NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation.
// REQUIRES: fsized-deallocation
// RUN: %build -fsized-deallocation
// RUN: %build -fsized-deallocation -O3
// RUN: %run
#if !defined(__cpp_sized_deallocation)