mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-24 12:02:36 +08:00
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:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user