Bläddra i källkod

avoid new/delete ellision in construct.pass.cpp

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@328445 91177308-0d34-0410-b5e6-96231b3b80d8
Eric Fiselier 7 år sedan
förälder
incheckning
85e9de93e2

+ 4 - 0
test/std/utilities/memory/default.allocator/allocator.members/construct.pass.cpp

@@ -63,6 +63,7 @@ int main()
 
 
     globalMemCounter.last_new_size = 0;
     globalMemCounter.last_new_size = 0;
     A* ap = a.allocate(3);
     A* ap = a.allocate(3);
+    DoNotOptimize(ap);
     assert(globalMemCounter.checkOutstandingNewEq(1));
     assert(globalMemCounter.checkOutstandingNewEq(1));
     assert(globalMemCounter.checkLastNewSizeEq(3 * sizeof(int)));
     assert(globalMemCounter.checkLastNewSizeEq(3 * sizeof(int)));
     assert(A_constructed == 0);
     assert(A_constructed == 0);
@@ -100,6 +101,7 @@ int main()
     assert(A_constructed == 0);
     assert(A_constructed == 0);
 
 
     a.deallocate(ap, 3);
     a.deallocate(ap, 3);
+    DoNotOptimize(ap);
     assert(globalMemCounter.checkOutstandingNewEq(0));
     assert(globalMemCounter.checkOutstandingNewEq(0));
     assert(A_constructed == 0);
     assert(A_constructed == 0);
     }
     }
@@ -111,6 +113,7 @@ int main()
 
 
     globalMemCounter.last_new_size = 0;
     globalMemCounter.last_new_size = 0;
     move_only* ap = a.allocate(3);
     move_only* ap = a.allocate(3);
+    DoNotOptimize(ap);
     assert(globalMemCounter.checkOutstandingNewEq(1));
     assert(globalMemCounter.checkOutstandingNewEq(1));
     assert(globalMemCounter.checkLastNewSizeEq(3 * sizeof(int)));
     assert(globalMemCounter.checkLastNewSizeEq(3 * sizeof(int)));
     assert(move_only_constructed == 0);
     assert(move_only_constructed == 0);
@@ -132,6 +135,7 @@ int main()
     assert(move_only_constructed == 0);
     assert(move_only_constructed == 0);
 
 
     a.deallocate(ap, 3);
     a.deallocate(ap, 3);
+    DoNotOptimize(ap);
     assert(globalMemCounter.checkOutstandingNewEq(0));
     assert(globalMemCounter.checkOutstandingNewEq(0));
     assert(move_only_constructed == 0);
     assert(move_only_constructed == 0);
     }
     }