From 739fd6a6b37a914454431a7ab1f0a8f4e022b64c Mon Sep 17 00:00:00 2001 From: Paolo Carlini <paolo.carlini@oracle.com> Date: Fri, 9 Mar 2012 10:37:34 +0000 Subject: [PATCH] formatter.h (enum _Debug_msg_id): Add __msg_self_move_assign. 2012-03-09 Paolo Carlini <paolo.carlini@oracle.com> * include/debug/formatter.h (enum _Debug_msg_id): Add __msg_self_move_assign. * include/debug/macros.h (__glibcxx_check_self_move_assign): Add. * src/c++11/debug.cc (_S_debug_messages): Update. * include/debug/safe_iterator.h (_Safe_iterator<>::operator= (_Safe_iterator&&)): Add check for self move assignment. * include/debug/set.h: Likewise. * include/debug/unordered_map: Likewise. * include/debug/multiset.h: Likewise. * include/debug/forward_list: Likewise. * include/debug/unordered_set: Likewise. * include/debug/vector: Likewise. * include/debug/map.h: Likewise. * include/debug/deque: Likewise. * include/debug/string: Likewise. * include/debug/list: Likewise. * include/debug/multimap.h: Likewise. * testsuite/21_strings/debug/self_move_assign_neg.cc: New. * testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_map/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/multimap/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/set/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/ self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/forward_list/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_set/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/vector/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/vector/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/multiset/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/list/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_multiset/debug/ self_move_assign_neg.cc: Likewise. * testsuite/23_containers/unordered_multiset/debug/ iterator_self_move_assign_neg.cc: Likewise. * testsuite/23_containers/map/debug/self_move_assign_neg.cc: Likewise. * testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: Likewise. From-SVN: r185134 --- libstdc++-v3/ChangeLog | 68 +++++++++++++++++++ libstdc++-v3/include/debug/deque | 1 + libstdc++-v3/include/debug/formatter.h | 6 +- libstdc++-v3/include/debug/forward_list | 1 + libstdc++-v3/include/debug/list | 1 + libstdc++-v3/include/debug/macros.h | 8 ++- libstdc++-v3/include/debug/map.h | 3 +- libstdc++-v3/include/debug/multimap.h | 3 +- libstdc++-v3/include/debug/multiset.h | 3 +- libstdc++-v3/include/debug/safe_iterator.h | 3 + libstdc++-v3/include/debug/set.h | 3 +- libstdc++-v3/include/debug/string | 1 + libstdc++-v3/include/debug/unordered_map | 4 +- libstdc++-v3/include/debug/unordered_set | 4 +- libstdc++-v3/include/debug/vector | 1 + libstdc++-v3/src/c++11/debug.cc | 5 +- .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../21_strings/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../deque/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../list/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../map/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../multimap/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../multiset/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../set/debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../debug/self_move_assign_neg.cc | 34 ++++++++++ .../debug/iterator_self_move_assign_neg.cc | 35 ++++++++++ .../vector/debug/self_move_assign_neg.cc | 34 ++++++++++ 42 files changed, 1001 insertions(+), 11 deletions(-) create mode 100644 libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc create mode 100644 libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 78f9e672f98b..d43172a75ba9 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,71 @@ +2012-03-09 Paolo Carlini <paolo.carlini@oracle.com> + + * include/debug/formatter.h (enum _Debug_msg_id): Add + __msg_self_move_assign. + * include/debug/macros.h (__glibcxx_check_self_move_assign): Add. + * src/c++11/debug.cc (_S_debug_messages): Update. + * include/debug/safe_iterator.h (_Safe_iterator<>::operator= + (_Safe_iterator&&)): Add check for self move assignment. + * include/debug/set.h: Likewise. + * include/debug/unordered_map: Likewise. + * include/debug/multiset.h: Likewise. + * include/debug/forward_list: Likewise. + * include/debug/unordered_set: Likewise. + * include/debug/vector: Likewise. + * include/debug/map.h: Likewise. + * include/debug/deque: Likewise. + * include/debug/string: Likewise. + * include/debug/list: Likewise. + * include/debug/multimap.h: Likewise. + * testsuite/21_strings/debug/self_move_assign_neg.cc: New. + * testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/unordered_map/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/multimap/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/set/debug/self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/unordered_multimap/debug/ + self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/unordered_multimap/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/forward_list/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/unordered_set/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/vector/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/vector/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/multiset/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/list/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/unordered_multiset/debug/ + self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/unordered_multiset/debug/ + iterator_self_move_assign_neg.cc: Likewise. + * testsuite/23_containers/map/debug/self_move_assign_neg.cc: + Likewise. + * testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: + Likewise. + 2012-03-08 Benjamin Kosnik <bkoz@redhat.com> * doc/doxygen/user.cfg.in: Update to Doxygen 1.8.0. diff --git a/libstdc++-v3/include/debug/deque b/libstdc++-v3/include/debug/deque index ce09cb26ab73..1ce416c180c8 100644 --- a/libstdc++-v3/include/debug/deque +++ b/libstdc++-v3/include/debug/deque @@ -134,6 +134,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h index d22a173e3ff5..8f36285ff172 100644 --- a/libstdc++-v3/include/debug/formatter.h +++ b/libstdc++-v3/include/debug/formatter.h @@ -1,6 +1,6 @@ // Debug-mode error formatting implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -109,7 +109,9 @@ namespace __gnu_debug __msg_valid_range2, // unordered sequence local iterators __msg_local_iter_compare_bad, - __msg_non_empty_range + __msg_non_empty_range, + // self move assign + __msg_self_move_assign }; class _Error_formatter diff --git a/libstdc++-v3/include/debug/forward_list b/libstdc++-v3/include/debug/forward_list index 9024ff904063..1f887da432cc 100644 --- a/libstdc++-v3/include/debug/forward_list +++ b/libstdc++-v3/include/debug/forward_list @@ -131,6 +131,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__list); clear(); swap(__list); return *this; diff --git a/libstdc++-v3/include/debug/list b/libstdc++-v3/include/debug/list index 856ba1a60e22..df2031dd6031 100644 --- a/libstdc++-v3/include/debug/list +++ b/libstdc++-v3/include/debug/list @@ -135,6 +135,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/macros.h b/libstdc++-v3/include/debug/macros.h index 07d714d353c9..aac56348f888 100644 --- a/libstdc++-v3/include/debug/macros.h +++ b/libstdc++-v3/include/debug/macros.h @@ -1,6 +1,6 @@ // Debugging support implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -310,6 +310,12 @@ _GLIBCXX_DEBUG_VERIFY(std::__is_heap(_First, _Last, _Pred), \ ._M_iterator(_Last, #_Last) \ ._M_string(#_Pred)) +// Verify that the container is not self move assigned +#define __glibcxx_check_self_move_assign(_Other) \ +_GLIBCXX_DEBUG_VERIFY(this != &_Other, \ + _M_message(__gnu_debug::__msg_self_move_assign) \ + ._M_sequence(*this, "this")) + #ifdef _GLIBCXX_DEBUG_PEDANTIC # define __glibcxx_check_string(_String) _GLIBCXX_DEBUG_ASSERT(_String != 0) # define __glibcxx_check_string_len(_String,_Len) \ diff --git a/libstdc++-v3/include/debug/map.h b/libstdc++-v3/include/debug/map.h index 9abfee867d00..34b83a5cee54 100644 --- a/libstdc++-v3/include/debug/map.h +++ b/libstdc++-v3/include/debug/map.h @@ -1,6 +1,6 @@ // Debugging map implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -120,6 +120,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/multimap.h b/libstdc++-v3/include/debug/multimap.h index e43094f8b4df..9157fa3458a3 100644 --- a/libstdc++-v3/include/debug/multimap.h +++ b/libstdc++-v3/include/debug/multimap.h @@ -1,6 +1,6 @@ // Debugging multimap implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -121,6 +121,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/multiset.h b/libstdc++-v3/include/debug/multiset.h index 9f510000d4d9..c7f38eabb40d 100644 --- a/libstdc++-v3/include/debug/multiset.h +++ b/libstdc++-v3/include/debug/multiset.h @@ -1,6 +1,6 @@ // Debugging multiset implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -120,6 +120,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/safe_iterator.h b/libstdc++-v3/include/debug/safe_iterator.h index 6bb3cd24ed27..b02fa7ab8ff3 100644 --- a/libstdc++-v3/include/debug/safe_iterator.h +++ b/libstdc++-v3/include/debug/safe_iterator.h @@ -234,6 +234,9 @@ namespace __gnu_debug _Safe_iterator& operator=(_Safe_iterator&& __x) { + _GLIBCXX_DEBUG_VERIFY(this != &__x, + _M_message(__msg_self_move_assign) + ._M_iterator(*this, "this")); _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() || __x._M_current == _Iterator(), _M_message(__msg_copy_singular) diff --git a/libstdc++-v3/include/debug/set.h b/libstdc++-v3/include/debug/set.h index 9846ec865f95..d6dc06f9ee20 100644 --- a/libstdc++-v3/include/debug/set.h +++ b/libstdc++-v3/include/debug/set.h @@ -1,6 +1,6 @@ // Debugging set implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -120,6 +120,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/string b/libstdc++-v3/include/debug/string index 6350f6de5e56..954a7ddf6849 100644 --- a/libstdc++-v3/include/debug/string +++ b/libstdc++-v3/include/debug/string @@ -155,6 +155,7 @@ namespace __gnu_debug basic_string& operator=(basic_string&& __str) { + __glibcxx_check_self_move_assign(__str); *static_cast<_Base*>(this) = std::move(__str); this->_M_invalidate_all(); return *this; diff --git a/libstdc++-v3/include/debug/unordered_map b/libstdc++-v3/include/debug/unordered_map index 37ca3cee7cc1..222bccf969f2 100644 --- a/libstdc++-v3/include/debug/unordered_map +++ b/libstdc++-v3/include/debug/unordered_map @@ -1,6 +1,6 @@ // Debugging unordered_map/unordered_multimap implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -128,6 +128,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; @@ -542,6 +543,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/unordered_set b/libstdc++-v3/include/debug/unordered_set index 7323184d4389..7996763829f8 100644 --- a/libstdc++-v3/include/debug/unordered_set +++ b/libstdc++-v3/include/debug/unordered_set @@ -1,6 +1,6 @@ // Debugging unordered_set/unordered_multiset implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -128,6 +128,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; @@ -537,6 +538,7 @@ namespace __debug { // NB: DR 1204. // NB: DR 675. + __glibcxx_check_self_move_assign(__x); clear(); swap(__x); return *this; diff --git a/libstdc++-v3/include/debug/vector b/libstdc++-v3/include/debug/vector index d0b2627a6201..9e0f8439a128 100644 --- a/libstdc++-v3/include/debug/vector +++ b/libstdc++-v3/include/debug/vector @@ -158,6 +158,7 @@ namespace __debug vector& operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) { + __glibcxx_check_self_move_assign(__x); _Base::operator=(std::move(__x)); this->_M_invalidate_all(); _M_update_guaranteed_capacity(); diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc index af45ae4f543a..0c746c1fc379 100644 --- a/libstdc++-v3/src/c++11/debug.cc +++ b/libstdc++-v3/src/c++11/debug.cc @@ -1,7 +1,7 @@ // Debugging mode support code -*- C++ -*- // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -// 2011 Free Software Foundation, Inc. +// 2011, 2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -177,7 +177,8 @@ namespace __gnu_debug // std::unordered_container::local_iterator "attempt to compare local iterators from different unordered container" " buckets", - "function requires a non-empty iterator range [%1.name;, %2.name;)" + "function requires a non-empty iterator range [%1.name;, %2.name;)", + "attempt to self move assign" }; void diff --git a/libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..a22770f2be58 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <debug/string> + +void test01() +{ + __gnu_debug::string s1; + auto it1 = s1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..fb25aa7b6a45 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <debug/string> + +void test01() +{ + __gnu_debug::string s1; + s1 = std::move(s1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..810c4331876a --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <deque> + +void test01() +{ + std::deque<int> d1; + auto it1 = d1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..c9b8cb2178cf --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <deque> + +void test01() +{ + std::deque<int> d1; + d1 = std::move(d1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..18c7f96e7a74 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <forward_list> + +void test01() +{ + std::forward_list<int> fl1; + auto it1 = fl1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..5a0dff5ab7ee --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <forward_list> + +void test01() +{ + std::forward_list<int> fl1; + fl1 = std::move(fl1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..5ec29e97fce2 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <list> + +void test01() +{ + std::list<int> l1; + auto it1 = l1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..f6fd4f5fd079 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <list> + +void test01() +{ + std::list<int> l1; + l1 = std::move(l1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..e6de5b90b64b --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <map> + +void test01() +{ + std::map<int, int> m1; + auto it1 = m1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..b9dbfacbcf51 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <map> + +void test01() +{ + std::map<int, int> m1; + m1 = std::move(m1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..efc7f9da7e11 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <map> + +void test01() +{ + std::multimap<int, int> mm1; + auto it1 = mm1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..995d9c2083d0 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <map> + +void test01() +{ + std::multimap<int, int> mm1; + mm1 = std::move(mm1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..1f1e61e11537 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <set> + +void test01() +{ + std::multiset<int> ms1; + auto it1 = ms1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..1789c95622de --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <set> + +void test01() +{ + std::multiset<int> ms1; + ms1 = std::move(ms1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..079ecd9b49a2 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <set> + +void test01() +{ + std::set<int> s1; + auto it1 = s1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..dd2bf9fb15c5 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <set> + +void test01() +{ + std::set<int> s1; + s1 = std::move(s1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..17b442aa5a11 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_map> + +void test01() +{ + std::unordered_map<int, int> um1; + auto it1 = um1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..1b4bf1365040 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_map> + +void test01() +{ + std::unordered_map<int, int> um1; + um1 = std::move(um1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..0f8b3143790e --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_map> + +void test01() +{ + std::unordered_multimap<int, int> umm1; + auto it1 = umm1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..6b5f396825c3 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_map> + +void test01() +{ + std::unordered_multimap<int, int> umm1; + umm1 = std::move(umm1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..171243bf3989 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_set> + +void test01() +{ + std::unordered_multiset<int> ums1; + auto it1 = ums1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..fa9cc27fe3cf --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_set> + +void test01() +{ + std::unordered_multiset<int> ums1; + ums1 = std::move(ums1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..17101c7a050c --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_set> + +void test01() +{ + std::unordered_set<int> us1; + auto it1 = us1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..1dc3e5c9dfc8 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <unordered_set> + +void test01() +{ + std::unordered_set<int> us1; + us1 = std::move(us1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc new file mode 100644 index 000000000000..7af4d92e9c95 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc @@ -0,0 +1,35 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <vector> + +void test01() +{ + std::vector<int> v1; + auto it1 = v1.begin(); + it1 = std::move(it1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc new file mode 100644 index 000000000000..8cad4f23eaa1 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// +// { dg-require-debug-mode "" } +// { dg-options "-std=gnu++11" } +// { dg-do run { xfail *-*-* } } + +#include <vector> + +void test01() +{ + std::vector<int> v1; + v1 = std::move(v1); +} + +int main() +{ + test01(); + return 0; +} -- GitLab