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. // selected.
struct A { ~A() {} }; struct A { ~A() {} };
A *volatile x;
int main() int main()
{ {
A* x = new A[3]; x = new A[3];
assert(0 == delete_called); assert(0 == delete_called);
assert(0 == delete_nothrow_called); assert(0 == delete_nothrow_called);

View File

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

View File

@@ -44,9 +44,11 @@ void operator delete(void* p, std::size_t) TEST_NOEXCEPT
std::free(p); std::free(p);
} }
int *volatile x;
int main() int main()
{ {
int *x = new int(42); x = new int(42);
assert(0 == unsized_delete_called); assert(0 == unsized_delete_called);
assert(0 == unsized_delete_nothrow_called); assert(0 == unsized_delete_nothrow_called);
assert(0 == sized_delete_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); std::free(p);
} }
int *volatile x;
int main() int main()
{ {
int *x = new int(42); x = new int(42);
assert(0 == unsized_delete_called); assert(0 == unsized_delete_called);
assert(0 == unsized_delete_nothrow_called); assert(0 == unsized_delete_nothrow_called);
assert(0 == sized_delete_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. // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation.
// REQUIRES: fsized-deallocation // REQUIRES: fsized-deallocation
// RUN: %build -fsized-deallocation // RUN: %build -fsized-deallocation -O3
// RUN: %run // RUN: %run
#if !defined(__cpp_sized_deallocation) #if !defined(__cpp_sized_deallocation)