On 12/08/20 20:37 +0100, Jonathan Wakely wrote:
The C++ LWG recently confirmed that self-move assignment should not have
undefined behaviour for standard containers (see the proposed resolution
of LWG 2839). The result should be a valid but unspecified value, just
like other times when a container is moved from.

Our std::list, std::__cxx11::basic_string and unordered containers all
have bugs which result in undefined behaviour.

For std::list the problem is that we clear the previous contents using
_M_clear() instead of clear(). This means the _M_next, _M_prev and
_M_size members are not zeroed, and so after we "update" them (with
their existing values), we are left with dangling pointers and a
non-zero size, but no elements.

For the unordered containers the problem is similar. _Hashtable first
deallocates the existing contents, then takes ownership of the pointers
from the RHS object (which has just had its contents deallocated so the
pointers are dangling).

For std::basic_string it's a little more subtle. When the string is
local (i.e. fits in the SSO buffer) we use char_traits::copy to copy the
contents from this->data() to __rhs.data(). When &__rhs == this that
copy violates the precondition that the ranges don't overlap. We only
need to check for self-move for this case where it's local, because the
only other case that can be true for self-move is that it's non-local
but the allocators compare equal. In that case the data pointer is
neither deallocated nor leaked, so the result is well-defined.

This patch also makes a small optimization for std::deque move
assignment, to use the efficient move when is_always_equal is false, but
the allocators compare equal at runtime.

Finally, we need to remove all the Debug Mode checks which abort the
program when a self-move is detected, because it's not undefined to do
that.

Before PR 85828 can be closed we should also look into fixing
std::shuffle so it doesn't do any redundant self-swaps.

libstdc++-v3/ChangeLog:

        PR libstdc++/85828
        * include/bits/basic_string.h (operator=(basic_string&&)): Check
        for self-move before copying with char_traits::copy.
        * include/bits/hashtable.h (operator=(_Hashtable&&)): Check for
        self-move.
        * include/bits/stl_deque.h (_M_move_assign1(deque&&, false_type)):
        Check for equal allocators.
        * include/bits/stl_list.h (_M_move_assign(list&&, true_type)):
        Call clear() instead of _M_clear().
        * include/debug/formatter.h (__msg_self_move_assign): Change
        comment.
        * include/debug/macros.h (__glibcxx_check_self_move_assign):
        (_GLIBCXX_DEBUG_VERIFY): Remove.
        * include/debug/safe_container.h (operator=(_Safe_container&&)):
        Remove assertion check for safe move and make it well-defined.
        * include/debug/safe_iterator.h (operator=(_Safe_iterator&&)):
        Remove assertion check for self-move.
        * include/debug/safe_local_iterator.h
        (operator=(_Safe_local_iterator&&)): Likewise.
        * testsuite/21_strings/basic_string/cons/char/self_move.cc: New test.
        * testsuite/23_containers/deque/cons/self_move.cc: New test.
        * testsuite/23_containers/forward_list/cons/self_move.cc: New test.
        * testsuite/23_containers/list/cons/self_move.cc: New test.
        * testsuite/23_containers/set/cons/self_move.cc: New test.
        * testsuite/23_containers/unordered_set/cons/self_move.cc: New test.
        * testsuite/23_containers/vector/cons/self_move.cc: New test.


This removes all the existing tests that expect a debug mode failure
that no longer happens.

Tested powerpc64le-linux. Committed to trunk.

commit 24f2764521d8f27760f03f626a4f20f4c82b7c73
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Aug 25 16:30:45 2020

    libstdc++: Remove tests for self-move debug assertions
    
    I recently removed the debug mode checks for self-move assignment, which
    means these tests now fail when _GLIBCXX_DEBUG is added to the options
    or when the check-debug target is used. Remove all the tests.
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/21_strings/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/list/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/map/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/set/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc:
            Removed.
            * testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc:
            Removed.
            * testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc: Removed.
            * testsuite/23_containers/vector/debug/self_move_assign_neg.cc: Removed.

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
deleted file mode 100644
index 1d031df9973..00000000000
--- a/libstdc++-v3/testsuite/21_strings/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { xfail *-*-* } }
-// { dg-require-debug-mode "" }
-// { dg-options "-std=gnu++11" }
-
-#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
deleted file mode 100644
index 982e0f636c5..00000000000
--- a/libstdc++-v3/testsuite/21_strings/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { xfail *-*-* } }
-// { dg-require-debug-mode "" }
-// { dg-options "-std=gnu++11" }
-
-#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
deleted file mode 100644
index 2a59e2721d7..00000000000
--- a/libstdc++-v3/testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 9ac441774a0..00000000000
--- a/libstdc++-v3/testsuite/23_containers/deque/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 9c08754cb26..00000000000
--- a/libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index a65bd4a7477..00000000000
--- a/libstdc++-v3/testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 6769a4e6772..00000000000
--- a/libstdc++-v3/testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 3e5330722c9..00000000000
--- a/libstdc++-v3/testsuite/23_containers/list/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index d2169725cc5..00000000000
--- a/libstdc++-v3/testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index aa80302d6fd..00000000000
--- a/libstdc++-v3/testsuite/23_containers/map/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index afaae19da77..00000000000
--- a/libstdc++-v3/testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index cde72a34677..00000000000
--- a/libstdc++-v3/testsuite/23_containers/multimap/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 806808ed687..00000000000
--- a/libstdc++-v3/testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index e4ea9b8ad2e..00000000000
--- a/libstdc++-v3/testsuite/23_containers/multiset/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 9672cc6a860..00000000000
--- a/libstdc++-v3/testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index ab44ac1a36c..00000000000
--- a/libstdc++-v3/testsuite/23_containers/set/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 10dafde93e9..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index a93bedfe582..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 91f9205ed61..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 1948eaa76c3..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 2b0d4126eb3..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index d7e0e0bb899..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index aa105c4a000..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index 538eba62bf2..00000000000
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index f1d84781c6e..00000000000
--- a/libstdc++-v3/testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#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
deleted file mode 100644
index b19bfddaf66..00000000000
--- a/libstdc++-v3/testsuite/23_containers/vector/debug/self_move_assign_neg.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2012-2020 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-do run { target c++11 xfail *-*-* } }
-// { dg-require-debug-mode "" }
-
-#include <vector>
-
-void test01()
-{
-  std::vector<int> v1;
-  v1 = std::move(v1);
-}
-
-int main()
-{
-  test01();
-  return 0;
-}

Reply via email to