push_back.pass.cpp revision 06086258d3d8c48a916ec51c33e1ad8f46821b81
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar//===----------------------------------------------------------------------===// 2f47f7a1c4082b42b21f1c7dc211ff90f4b38258aAnders Carlsson// 3f47f7a1c4082b42b21f1c7dc211ff90f4b38258aAnders Carlsson// The LLVM Compiler Infrastructure 4f47f7a1c4082b42b21f1c7dc211ff90f4b38258aAnders Carlsson// 5f47f7a1c4082b42b21f1c7dc211ff90f4b38258aAnders Carlsson// This file is dual licensed under the MIT and the University of Illinois Open 65dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson// Source Licenses. See LICENSE.TXT for details. 75dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson// 85dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson//===----------------------------------------------------------------------===// 91eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 105dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson// <vector> 115dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson 1267d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall// void push_back(const value_type& x); 1367d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall 1467d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall#include <vector> 1567d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall#include <cassert> 1667d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall#include "../../../stack_allocator.h" 1767d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall#include "min_allocator.h" 1867d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall#include "asan_testing.h" 1967d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall 205dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlssonint main() 215dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson{ 225dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson { 235dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson std::vector<int> c; 2444054452c416a622b8f19a6d157a0affc05b9aa8Douglas Gregor c.push_back(0); 2544054452c416a622b8f19a6d157a0affc05b9aa8Douglas Gregor assert(c.size() == 1); 2644054452c416a622b8f19a6d157a0affc05b9aa8Douglas Gregor assert(is_contiguous_container_asan_correct(c)); 2767d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall for (int j = 0; j < c.size(); ++j) 2867d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall assert(c[j] == j); 2967d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall c.push_back(1); 3067d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall assert(c.size() == 2); 315dc2af12bdb8c71c01556f7d5780c5ef94af0306Anders Carlsson assert(is_contiguous_container_asan_correct(c)); 3267d1a67f3db2f1aa69083c5c94164d6e0ee05b32John McCall for (int j = 0; j < c.size(); ++j) 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines assert(c[j] == j); 34530fa4fc800f2788cfe6d4113677ca631d1e801fAlp Toker c.push_back(2); 35530fa4fc800f2788cfe6d4113677ca631d1e801fAlp Toker assert(c.size() == 3); 36530fa4fc800f2788cfe6d4113677ca631d1e801fAlp Toker assert(is_contiguous_container_asan_correct(c)); 37bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner for (int j = 0; j < c.size(); ++j) 38bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner assert(c[j] == j); 39bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner c.push_back(3); 40bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner assert(c.size() == 4); 41bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner assert(is_contiguous_container_asan_correct(c)); 42bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner for (int j = 0; j < c.size(); ++j) 43bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner assert(c[j] == j); 44bd87c0bd2358498eae71c6cb24e57d2c884c74aaChris Lattner c.push_back(4); 45 assert(c.size() == 5); 46 assert(is_contiguous_container_asan_correct(c)); 47 for (int j = 0; j < c.size(); ++j) 48 assert(c[j] == j); 49 } 50 { 51 std::vector<int, stack_allocator<int, 15> > c; 52 c.push_back(0); 53 assert(c.size() == 1); 54 assert(is_contiguous_container_asan_correct(c)); 55 for (int j = 0; j < c.size(); ++j) 56 assert(c[j] == j); 57 c.push_back(1); 58 assert(c.size() == 2); 59 assert(is_contiguous_container_asan_correct(c)); 60 for (int j = 0; j < c.size(); ++j) 61 assert(c[j] == j); 62 c.push_back(2); 63 assert(c.size() == 3); 64 assert(is_contiguous_container_asan_correct(c)); 65 for (int j = 0; j < c.size(); ++j) 66 assert(c[j] == j); 67 c.push_back(3); 68 assert(c.size() == 4); 69 assert(is_contiguous_container_asan_correct(c)); 70 for (int j = 0; j < c.size(); ++j) 71 assert(c[j] == j); 72 c.push_back(4); 73 assert(c.size() == 5); 74 assert(is_contiguous_container_asan_correct(c)); 75 for (int j = 0; j < c.size(); ++j) 76 assert(c[j] == j); 77 } 78#if __cplusplus >= 201103L 79 { 80 std::vector<int, min_allocator<int>> c; 81 c.push_back(0); 82 assert(c.size() == 1); 83 assert(is_contiguous_container_asan_correct(c)); 84 for (int j = 0; j < c.size(); ++j) 85 assert(c[j] == j); 86 c.push_back(1); 87 assert(c.size() == 2); 88 assert(is_contiguous_container_asan_correct(c)); 89 for (int j = 0; j < c.size(); ++j) 90 assert(c[j] == j); 91 c.push_back(2); 92 assert(c.size() == 3); 93 assert(is_contiguous_container_asan_correct(c)); 94 for (int j = 0; j < c.size(); ++j) 95 assert(c[j] == j); 96 c.push_back(3); 97 assert(c.size() == 4); 98 assert(is_contiguous_container_asan_correct(c)); 99 for (int j = 0; j < c.size(); ++j) 100 assert(c[j] == j); 101 c.push_back(4); 102 assert(c.size() == 5); 103 assert(is_contiguous_container_asan_correct(c)); 104 for (int j = 0; j < c.size(); ++j) 105 assert(c[j] == j); 106 } 107#endif 108} 109