avoid new/delete ellision in construct.pass.cpp
authorEric Fiselier <eric@efcs.ca>
Sun, 25 Mar 2018 03:00:42 +0000 (03:00 +0000)
committerEric Fiselier <eric@efcs.ca>
Sun, 25 Mar 2018 03:00:42 +0000 (03:00 +0000)
llvm-svn: 328445

libcxx/test/std/utilities/memory/default.allocator/allocator.members/construct.pass.cpp

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