summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2019-02-13 16:43:44 +0000
committerLouis Dionne <ldionne@apple.com>2019-02-13 16:43:44 +0000
commit95601bdd297037c7ab602825708bf7a5ab14ee90 (patch)
treea07780333e6dff11951db7db798831b5e46c978b
parent291713a596fb165d0029d05a835c437371cad67f (diff)
downloadbcm5719-llvm-95601bdd297037c7ab602825708bf7a5ab14ee90.tar.gz
bcm5719-llvm-95601bdd297037c7ab602825708bf7a5ab14ee90.zip
[libcxx] Do not assume the number of elements in a moved-from associative container
Reviewed as https://reviews.llvm.org/D57903. Thanks to Andrey Maksimov for the patch. llvm-svn: 353955
-rw-r--r--libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp9
-rw-r--r--libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp9
-rw-r--r--libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp9
-rw-r--r--libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp9
4 files changed, 24 insertions, 12 deletions
diff --git a/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
index aa87e9ff07a..cc22a4c34fb 100644
--- a/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp
@@ -178,15 +178,18 @@ int main(int, char**)
M m3(std::move(m1), A());
assert(m3 == m2);
LIBCPP_ASSERT(m1.empty());
- assert(Counter_base::gConstructed == num+6);
+ assert(Counter_base::gConstructed >= (int)(num+6));
+ assert(Counter_base::gConstructed <= (int)(num+6+m1.size()));
{
M m4(std::move(m2), A(5));
- assert(Counter_base::gConstructed == num+6);
+ assert(Counter_base::gConstructed >= (int)(num+6));
+ assert(Counter_base::gConstructed <= (int)(num+6+m1.size()+m2.size()));
assert(m4 == m3);
LIBCPP_ASSERT(m2.empty());
}
- assert(Counter_base::gConstructed == num+3);
+ assert(Counter_base::gConstructed >= (int)(num+3));
+ assert(Counter_base::gConstructed <= (int)(num+3+m1.size()+m2.size()));
}
assert(Counter_base::gConstructed == 0);
}
diff --git a/libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp
index 712afbeaa6a..4505cd216ac 100644
--- a/libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp
@@ -178,15 +178,18 @@ int main(int, char**)
M m3(std::move(m1), A());
assert(m3 == m2);
LIBCPP_ASSERT(m1.empty());
- assert(Counter_base::gConstructed == 3*num);
+ assert(Counter_base::gConstructed >= (int)(3*num));
+ assert(Counter_base::gConstructed <= (int)(4*num));
{
M m4(std::move(m2), A(5));
- assert(Counter_base::gConstructed == 3*num);
+ assert(Counter_base::gConstructed >= (int)(3*num));
+ assert(Counter_base::gConstructed <= (int)(5*num));
assert(m4 == m3);
LIBCPP_ASSERT(m2.empty());
}
- assert(Counter_base::gConstructed == 2*num);
+ assert(Counter_base::gConstructed >= (int)(2*num));
+ assert(Counter_base::gConstructed <= (int)(4*num));
}
assert(Counter_base::gConstructed == 0);
}
diff --git a/libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp
index 1abe5b928b5..3727c143dce 100644
--- a/libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp
@@ -172,15 +172,18 @@ int main(int, char**)
M m3(std::move(m1), A());
assert(m3 == m2);
LIBCPP_ASSERT(m1.empty());
- assert(Counter_base::gConstructed == 3*num);
+ assert(Counter_base::gConstructed >= (int)(3*num));
+ assert(Counter_base::gConstructed <= (int)(4*num));
{
M m4(std::move(m2), A(5));
- assert(Counter_base::gConstructed == 3*num);
+ assert(Counter_base::gConstructed >= (int)(3*num));
+ assert(Counter_base::gConstructed <= (int)(5*num));
assert(m4 == m3);
LIBCPP_ASSERT(m2.empty());
}
- assert(Counter_base::gConstructed == 2*num);
+ assert(Counter_base::gConstructed >= (int)(2*num));
+ assert(Counter_base::gConstructed <= (int)(4*num));
}
assert(Counter_base::gConstructed == 0);
}
diff --git a/libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp
index db7933e92b8..63ec296892b 100644
--- a/libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp
@@ -172,15 +172,18 @@ int main(int, char**)
M m3(std::move(m1), A());
assert(m3 == m2);
LIBCPP_ASSERT(m1.empty());
- assert(Counter_base::gConstructed == 6+num);
+ assert(Counter_base::gConstructed >= (int)(6+num));
+ assert(Counter_base::gConstructed <= (int)(m1.size()+6+num));
{
M m4(std::move(m2), A(5));
- assert(Counter_base::gConstructed == 6+num);
+ assert(Counter_base::gConstructed >= (int)(6+num));
+ assert(Counter_base::gConstructed <= (int)(m1.size()+m2.size()+6+num));
assert(m4 == m3);
LIBCPP_ASSERT(m2.empty());
}
- assert(Counter_base::gConstructed == 3+num);
+ assert(Counter_base::gConstructed >= (int)(3+num));
+ assert(Counter_base::gConstructed <= (int)(m1.size()+m2.size()+3+num));
}
assert(Counter_base::gConstructed == 0);
}
OpenPOWER on IntegriCloud