stl_list.h (_List_base::_List_base(_List_base&&)): Optimize.

* include/bits/stl_list.h (_List_base::_List_base(_List_base&&)):
	Optimize.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r213716
This commit is contained in:
Jonathan Wakely 2014-08-07 18:25:13 +01:00 committed by Jonathan Wakely
parent 16918afd48
commit d0ef19a0b2
6 changed files with 28 additions and 6 deletions

View File

@ -1,3 +1,16 @@
2014-08-07 Jonathan Wakely <jwakely@redhat.com>
* include/bits/stl_list.h (_List_base::_List_base(_List_base&&)):
Optimize.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
Adjust dg-error line number.
* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
Likewise.
2014-08-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/15339

View File

@ -377,8 +377,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_List_base(_List_base&& __x) noexcept
: _M_impl(std::move(__x._M_get_Node_allocator()))
{
_M_init();
__detail::_List_node_base::swap(_M_impl._M_node, __x._M_impl._M_node);
auto* const __xnode = std::__addressof(__x._M_impl._M_node);
if (__xnode->_M_next == __xnode)
_M_init();
else
{
auto* const __node = std::__addressof(_M_impl._M_node);
__node->_M_next = __xnode->_M_next;
__node->_M_prev = __xnode->_M_prev;
__node->_M_next->_M_prev = __node->_M_prev->_M_next = __node;
__xnode->_M_next = __xnode->_M_prev = __xnode;
}
}
#endif

View File

@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1656 }
// { dg-error "no matching" "" { target *-*-* } 1665 }
#include <list>

View File

@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1608 }
// { dg-error "no matching" "" { target *-*-* } 1617 }
#include <list>

View File

@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1608 }
// { dg-error "no matching" "" { target *-*-* } 1617 }
#include <list>
#include <utility>

View File

@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1608 }
// { dg-error "no matching" "" { target *-*-* } 1617 }
#include <list>