Index: test/std/containers/sequences/deque/deque.cons/size.pass.cpp =================================================================== --- test/std/containers/sequences/deque/deque.cons/size.pass.cpp +++ test/std/containers/sequences/deque/deque.cons/size.pass.cpp @@ -98,7 +98,7 @@ test >(4096); test >(4097); - test1 >(4095); + LIBCPP_ONLY(test1 >(4095)); #if TEST_STD_VER >= 11 test >(4095); Index: test/std/containers/sequences/deque/deque.cons/size_value.pass.cpp =================================================================== --- test/std/containers/sequences/deque/deque.cons/size_value.pass.cpp +++ test/std/containers/sequences/deque/deque.cons/size_value.pass.cpp @@ -44,7 +44,7 @@ test >(4095, 78); test >(4096, 1165); test >(4097, 157); - test >(4095, 90); + LIBCPP_ONLY(test >(4095, 90)); #if TEST_STD_VER >= 11 test >(4095, 90); #endif Index: test/std/containers/sequences/list/list.cons/input_iterator.pass.cpp =================================================================== --- test/std/containers/sequences/list/list.cons/input_iterator.pass.cpp +++ test/std/containers/sequences/list/list.cons/input_iterator.pass.cpp @@ -43,7 +43,8 @@ } { int a[] = {0, 1, 2, 3}; - std::list > l(input_iterator(a), + // Add 2 for implementations that dynamically allocate a sentinel node and container proxy. + std::list > l(input_iterator(a), input_iterator(a + sizeof(a)/sizeof(a[0]))); assert(l.size() == sizeof(a)/sizeof(a[0])); assert(std::distance(l.begin(), l.end()) == sizeof(a)/sizeof(a[0])); Index: test/std/containers/sequences/list/list.cons/size_type.pass.cpp =================================================================== --- test/std/containers/sequences/list/list.cons/size_type.pass.cpp +++ test/std/containers/sequences/list/list.cons/size_type.pass.cpp @@ -48,7 +48,8 @@ assert(*i == 0); } { - std::list > l(3); + // Add 2 for implementations that dynamically allocate a sentinel node and container proxy. + std::list > l(3); assert(l.size() == 3); assert(std::distance(l.begin(), l.end()) == 3); std::list::const_iterator i = l.begin(); Index: test/std/containers/sequences/list/list.cons/size_value_alloc.pass.cpp =================================================================== --- test/std/containers/sequences/list/list.cons/size_value_alloc.pass.cpp +++ test/std/containers/sequences/list/list.cons/size_value_alloc.pass.cpp @@ -42,7 +42,8 @@ assert(*i == 2); } { - std::list > l(3, 2); + // Add 2 for implementations that dynamically allocate a sentinel node and container proxy. + std::list > l(3, 2); assert(l.size() == 3); assert(std::distance(l.begin(), l.end()) == 3); std::list::const_iterator i = l.begin(); Index: test/std/containers/sequences/vector/vector.capacity/reserve.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.capacity/reserve.pass.cpp +++ test/std/containers/sequences/vector/vector.capacity/reserve.pass.cpp @@ -37,7 +37,8 @@ assert(is_contiguous_container_asan_correct(v)); } { - std::vector > v(100); + // Add 1 for implementations that dynamically allocate a container proxy. + std::vector > v(100); assert(v.capacity() == 100); v.reserve(50); assert(v.size() == 100); Index: test/std/containers/sequences/vector/vector.capacity/resize_size.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.capacity/resize_size.pass.cpp +++ test/std/containers/sequences/vector/vector.capacity/resize_size.pass.cpp @@ -33,7 +33,8 @@ assert(is_contiguous_container_asan_correct(v)); } { - std::vector > v(100); + // Add 1 for implementations that dynamically allocate a container proxy. + std::vector > v(100); v.resize(50); assert(v.size() == 50); assert(v.capacity() == 100); @@ -56,7 +57,8 @@ assert(is_contiguous_container_asan_correct(v)); } { - std::vector > v(100); + // Add 1 for implementations that dynamically allocate a container proxy. + std::vector > v(100); v.resize(50); assert(v.size() == 50); assert(v.capacity() == 100); Index: test/std/containers/sequences/vector/vector.capacity/resize_size_value.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.capacity/resize_size_value.pass.cpp +++ test/std/containers/sequences/vector/vector.capacity/resize_size_value.pass.cpp @@ -35,7 +35,8 @@ assert(v[i] == 1); } { - std::vector > v(100); + // Add 1 for implementations that dynamically allocate a container proxy. + std::vector > v(100); v.resize(50, 1); assert(v.size() == 50); assert(v.capacity() == 100); Index: test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp +++ test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp @@ -43,10 +43,11 @@ test >(a, an); test > >(input_iterator(a), input_iterator(an)); - test > >(forward_iterator(a), forward_iterator(an)); - test > >(bidirectional_iterator(a), bidirectional_iterator(an)); - test > >(random_access_iterator(a), random_access_iterator(an)); - test > >(a, an); + // Add 1 for implementations that dynamically allocate a container proxy. + test > >(forward_iterator(a), forward_iterator(an)); + test > >(bidirectional_iterator(a), bidirectional_iterator(an)); + test > >(random_access_iterator(a), random_access_iterator(an)); + test > >(a, an); #if TEST_STD_VER >= 11 test> >(input_iterator(a), input_iterator(an)); test> >(forward_iterator(a), forward_iterator(an)); Index: test/std/containers/sequences/vector/vector.cons/construct_size_value.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.cons/construct_size_value.pass.cpp +++ test/std/containers/sequences/vector/vector.cons/construct_size_value.pass.cpp @@ -34,7 +34,8 @@ int main() { test >(50, 3); - test > >(50, 5); + // Add 1 for implementations that dynamically allocate a container proxy. + test > >(50, 5); #if TEST_STD_VER >= 11 test> >(50, 3); #endif Index: test/std/containers/sequences/vector/vector.modifiers/push_back.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.modifiers/push_back.pass.cpp +++ test/std/containers/sequences/vector/vector.modifiers/push_back.pass.cpp @@ -48,7 +48,10 @@ assert(c[j] == j); } { - std::vector > c; + // libc++ needs 15 because it grows by 2x (1 + 2 + 4 + 8). + // Use 17 for implementations that dynamically allocate a container proxy + // and grow by 1.5x (1 for proxy + 1 + 2 + 3 + 4 + 6). + std::vector > c; c.push_back(0); assert(c.size() == 1); assert(is_contiguous_container_asan_correct(c)); Index: test/std/containers/sequences/vector/vector.modifiers/push_back_rvalue.pass.cpp =================================================================== --- test/std/containers/sequences/vector/vector.modifiers/push_back_rvalue.pass.cpp +++ test/std/containers/sequences/vector/vector.modifiers/push_back_rvalue.pass.cpp @@ -50,7 +50,10 @@ assert(c[j] == MoveOnly(j)); } { - std::vector > c; + // libc++ needs 15 because it grows by 2x (1 + 2 + 4 + 8). + // Use 17 for implementations that dynamically allocate a container proxy + // and grow by 1.5x (1 for proxy + 1 + 2 + 3 + 4 + 6). + std::vector > c; c.push_back(MoveOnly(0)); assert(c.size() == 1); assert(is_contiguous_container_asan_correct(c));