This adds { dg-do compile } to some tests that only use static_assert and adjusts the swap overloads so that all commented-out assertions can be enabled.
2013-11-19 Jonathan Wakely <jwakely....@gmail.com> * testsuite/23_containers/forward_list/allocator/noexcept.cc: Change to compile-only test. Adjust swap overload to handle rebound allocators. * testsuite/23_containers/map/allocator/noexcept.cc: Likewise. * testsuite/23_containers/multimap/allocator/noexcept.cc: Likewise. * testsuite/23_containers/multiset/allocator/noexcept.cc: Likewise. * testsuite/23_containers/set/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_map/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_multiset/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_set/allocator/noexcept.cc: Likewise. * testsuite/23_containers/vector/allocator/noexcept.cc: Likewise. * testsuite/23_containers/vector/allocator/swap.cc: Add elements before swapping. Tested x86_64-linux, committed to trunk.
commit b42b8217157bb210dbae39d75f07e0e756a4ded1 Author: Jonathan Wakely <jwakely....@gmail.com> Date: Tue Nov 19 20:39:14 2013 +0000 * testsuite/23_containers/forward_list/allocator/noexcept.cc: Change to compile-only test. Adjust swap overload to handle rebound allocators. * testsuite/23_containers/map/allocator/noexcept.cc: Likewise. * testsuite/23_containers/multimap/allocator/noexcept.cc: Likewise. * testsuite/23_containers/multiset/allocator/noexcept.cc: Likewise. * testsuite/23_containers/set/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_map/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_multiset/allocator/noexcept.cc: Likewise. * testsuite/23_containers/unordered_set/allocator/noexcept.cc: Likewise. * testsuite/23_containers/vector/allocator/noexcept.cc: Likewise. * testsuite/23_containers/vector/allocator/swap.cc: Add elements before swapping. diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc index 0ee1670..635fb77 100644 --- a/libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc @@ -15,23 +15,21 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=gnu++0x" } #include <forward_list> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -64,13 +62,5 @@ void test03() test_type v1(alloc_type(1)); test_type v2(alloc_type(2)); static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); - // static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); -} - -int main() -{ - test01(); - test02(); - test03(); - return 0; + static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } diff --git a/libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc index 832a28a..4bd3f57 100644 --- a/libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=gnu++11" } #include <map> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -31,14 +31,11 @@ struct U { }; namespace __gnu_test { - inline void - swap(propagating_allocator<std::pair<const T, U>, true>& l, - propagating_allocator<std::pair<const T, U>, true>& r) - noexcept(false) - { - typedef uneq_allocator<std::pair<const T, U>> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -73,11 +70,3 @@ void test03() static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } - -int main() -{ - test01(); - test02(); - test03(); - return 0; -} diff --git a/libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc index aee4dc9..9913acb 100644 --- a/libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=gnu++11" } #include <map> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -31,14 +31,11 @@ struct U { }; namespace __gnu_test { - inline void - swap(propagating_allocator<std::pair<const T, U>, true>& l, - propagating_allocator<std::pair<const T, U>, true>& r) - noexcept(false) - { - typedef uneq_allocator<std::pair<const T, U>> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -73,11 +70,3 @@ void test03() static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } - -int main() -{ - test01(); - test02(); - test03(); - return 0; -} diff --git a/libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc index 89b0053..d429313 100644 --- a/libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc @@ -15,6 +15,7 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=gnu++11" } #include <set> @@ -29,14 +30,11 @@ using Cmp = std::less<T>; namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, - propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -71,11 +69,3 @@ void test03() static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } - -int main() -{ - test01(); - test02(); - test03(); - return 0; -} diff --git a/libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc index 07adbc0..f8389d6 100644 --- a/libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=gnu++11" } #include <set> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -29,14 +29,11 @@ using Cmp = std::less<T>; namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, - propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -71,11 +68,3 @@ void test03() static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } - -int main() -{ - test01(); - test02(); - test03(); - return 0; -} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc index 47eb61d..64c46f2 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=c++11" } #include <unordered_map> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -37,13 +37,11 @@ struct equal_to namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -76,13 +74,5 @@ void test03() test_type v1(alloc_type(1)); test_type v2(alloc_type(2)); static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); - // static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); -} - -int main() -{ - test01(); - test02(); - test03(); - return 0; + static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc index de16cbd..fe6fc6e 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=c++11" } #include <unordered_map> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -37,13 +37,11 @@ struct equal_to namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -76,13 +74,5 @@ void test03() test_type v1(alloc_type(1)); test_type v2(alloc_type(2)); static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); - // static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); -} - -int main() -{ - test01(); - test02(); - test03(); - return 0; + static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc index 5d69e07..2c7e853 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=c++11" } #include <unordered_set> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -37,13 +37,11 @@ struct equal_to namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -76,13 +74,5 @@ void test03() test_type v1(alloc_type(1)); test_type v2(alloc_type(2)); static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); - // static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); -} - -int main() -{ - test01(); - test02(); - test03(); - return 0; + static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc index 0f73126..5ada755 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc @@ -15,10 +15,10 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=c++11" } #include <unordered_set> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; @@ -37,13 +37,11 @@ struct equal_to namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -76,13 +74,5 @@ void test03() test_type v1(alloc_type(1)); test_type v2(alloc_type(2)); static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); - // static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); -} - -int main() -{ - test01(); - test02(); - test03(); - return 0; + static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } diff --git a/libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc b/libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc index a805a4f..3123143 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc @@ -15,23 +15,21 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-do compile } // { dg-options "-std=gnu++0x" } #include <vector> -#include <testsuite_hooks.h> #include <testsuite_allocator.h> struct T { int i; }; namespace __gnu_test { - inline void - swap(propagating_allocator<T, true>& l, propagating_allocator<T, true>& r) - noexcept(false) - { - typedef uneq_allocator<T> base_alloc; - swap(static_cast<base_alloc&>(l), static_cast<base_alloc&>(r)); - } + template<typename U> + inline void + swap(propagating_allocator<U, true>& l, propagating_allocator<U, true>& r) + noexcept(false) + { } } using __gnu_test::propagating_allocator; @@ -66,11 +64,3 @@ void test03() static_assert( noexcept( v1 = std::move(v2) ), "Move assign cannot throw" ); static_assert( !noexcept( v1.swap(v2) ), "Swap can throw" ); } - -int main() -{ - test01(); - test02(); - test03(); - return 0; -} diff --git a/libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc b/libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc index ce44cf8..ba44267 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc @@ -64,7 +64,9 @@ void test02() typedef propagating_allocator<T, true> alloc_type; typedef std::vector<T, alloc_type> test_type; test_type v1(alloc_type(1)); + v1.push_back(T()); test_type v2(alloc_type(2)); + v2.push_back(T()); std::swap(v1, v2); VERIFY(2 == v1.get_allocator().get_personality()); VERIFY(1 == v2.get_allocator().get_personality());