This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] Redo move-constructors for efficiency (in C++0x)
- From: Paolo Carlini <pcarlini at suse dot de>
- To: Gcc Patch List <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 16 Oct 2007 17:21:57 +0200
- Subject: [v3] Redo move-constructors for efficiency (in C++0x)
Hi,
tested x86_64-linux, committed to mainline.
Paolo.
//////////////////
2007-10-16 Paolo Carlini <pcarlini@suse.de>
* include/ext/vstring.h (__versa_string<>::
__versa_string(__versa_string&&),
__versa_string<>::operator=(__versa_string&&,
swap(__versa_string<>&&, __versa_string<>&),
swap(__versa_string<>(&, __versa_string<>&&)): Add.
(__versa_string<>::swap(__versa_string&&)): Adjust for C++0x.
* include/ext/sso_string_base.h
(__sso_string_base(__sso_string_base&&)): Add.
(__sso_string_base()): Use _Alloc_hider(_CharT*).
* include/ext/rc_string_base.h (__rc_string_base(__rc_string_base&&)):
Add.
(__rc_string_base()): Use _Alloc_hider(_CharT*).
* include/ext/vstring_util.h (_Alloc_hider::_Alloc_hider(_CharT*)):
Add.
* testsuite/ext/vstring/moveable.cc: Add.
* include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&)): Add.
* include/bits/stl_map.h (map<>::map(map&&)): Forward to the latter.
* include/bits/stl_set.h (set<>::set(set&&)): Likewise.
* include/bits/stl_multimap.h (multimap<>::multimap(multimap&&)):
Likewise.
* include/bits/stl_multiset.h (multiset<>::multiset(multiset&&)):
Likewise.
* include/bits/stl_deque.h (_Deque_base<>::_Deque_base(_Deque_base&&)):
Add.
(deque<>::deque(deque&&)): Forward to the latter.
* include/bits/stl_list.h (_List_base<>::_List_base(_List_base&&)):
Add.
(list<>::list(list&&)): Forward to the latter.
* include/bits/stl_vector.h
(_Vector_base<>::_Vector_base(_Vector_base&&)): Add.
(vector<>::vector(vector&&)): Forward to the latter.
* include/bits/stl_bvector.h
(_Bvector_base<>::_Bvector_base(_Bvector_base&&)): Add.
(vector<bool>::vector(vector&&)): Forward to the latter.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
Adjust dg-error lines.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Likewise.
Index: include/ext/vstring_util.h
===================================================================
--- include/ext/vstring_util.h (revision 129370)
+++ include/ext/vstring_util.h (working copy)
@@ -46,6 +46,7 @@
#include <bits/ostream_insert.h>
#include <bits/stl_iterator.h>
#include <ext/numeric_traits.h>
+#include <bits/stl_move.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
@@ -91,6 +92,9 @@
struct _Alloc_hider
: public _Alloc1
{
+ _Alloc_hider(_CharT* __ptr)
+ : _Alloc1(), _M_p(__ptr) { }
+
_Alloc_hider(const _Alloc1& __a, _CharT* __ptr)
: _Alloc1(__a), _M_p(__ptr) { }
Index: include/ext/vstring.h
===================================================================
--- include/ext/vstring.h (revision 129370)
+++ include/ext/vstring.h (working copy)
@@ -146,6 +146,18 @@
__versa_string(const __versa_string& __str)
: __vstring_base(__str) { }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ /**
+ * @brief String move constructor.
+ * @param str Source string.
+ *
+ * The newly-constructed %string contains the exact contents of @a str.
+ * The contents of @a str are a valid, but unspecified string.
+ */
+ __versa_string(__versa_string&& __str)
+ : __vstring_base(std::forward<__vstring_base>(__str)) { }
+#endif
+
/**
* @brief Construct string as copy of a substring.
* @param str Source string.
@@ -230,6 +242,23 @@
operator=(const __versa_string& __str)
{ return this->assign(__str); }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ /**
+ * @brief String move assignment operator.
+ * @param str Source string.
+ *
+ * The contents of @a str are moved into this string (without copying).
+ * @a str is a valid, but unspecified string.
+ */
+ __versa_string&
+ operator=(__versa_string&& __str)
+ {
+ if (this != &__str)
+ this->swap(__str);
+ return *this;
+ }
+#endif
+
/**
* @brief Copy contents of @a s into this string.
* @param s Source null-terminated string.
@@ -1279,7 +1308,11 @@
* time.
*/
void
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ swap(__versa_string&& __s)
+#else
swap(__versa_string& __s)
+#endif
{ this->_M_swap(__s); }
// String operations:
@@ -2154,6 +2187,22 @@
__versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
{ __lhs.swap(__rhs); }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<typename _CharT, typename _Traits, typename _Alloc,
+ template <typename, typename, typename> class _Base>
+ inline void
+ swap(__versa_string<_CharT, _Traits, _Alloc, _Base>&& __lhs,
+ __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
+ { __lhs.swap(__rhs); }
+
+ template<typename _CharT, typename _Traits, typename _Alloc,
+ template <typename, typename, typename> class _Base>
+ inline void
+ swap(__versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
+ __versa_string<_CharT, _Traits, _Alloc, _Base>&& __rhs)
+ { __lhs.swap(__rhs); }
+#endif
+
_GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NAMESPACE(std)
Index: include/ext/rc_string_base.h
===================================================================
--- include/ext/rc_string_base.h (revision 129370)
+++ include/ext/rc_string_base.h (working copy)
@@ -301,12 +301,18 @@
{ _M_rep()->_M_set_length(__n); }
__rc_string_base()
- : _M_dataplus(_Alloc(), _S_empty_rep._M_refcopy()) { }
+ : _M_dataplus(_S_empty_rep._M_refcopy()) { }
__rc_string_base(const _Alloc& __a);
__rc_string_base(const __rc_string_base& __rcs);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ __rc_string_base(__rc_string_base&& __rcs)
+ : _M_dataplus(__rcs._M_get_allocator(), __rcs._M_data())
+ { __rcs._M_data(_S_empty_rep._M_refcopy()); }
+#endif
+
__rc_string_base(size_type __n, _CharT __c, const _Alloc& __a);
template<typename _InputIterator>
Index: include/ext/sso_string_base.h
===================================================================
--- include/ext/sso_string_base.h (revision 129370)
+++ include/ext/sso_string_base.h (working copy)
@@ -175,13 +175,17 @@
}
__sso_string_base()
- : _M_dataplus(_Alloc(), _M_local_data)
+ : _M_dataplus(_M_local_data)
{ _M_set_length(0); }
__sso_string_base(const _Alloc& __a);
__sso_string_base(const __sso_string_base& __rcs);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ __sso_string_base(__sso_string_base&& __rcs);
+#endif
+
__sso_string_base(size_type __n, _CharT __c, const _Alloc& __a);
template<typename _InputIterator>
@@ -336,6 +340,30 @@
: _M_dataplus(__rcs._M_get_allocator(), _M_local_data)
{ _M_construct(__rcs._M_data(), __rcs._M_data() + __rcs._M_length()); }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ __sso_string_base<_CharT, _Traits, _Alloc>::
+ __sso_string_base(__sso_string_base&& __rcs)
+ : _M_dataplus(__rcs._M_get_allocator(), _M_local_data)
+ {
+ if (__rcs._M_is_local())
+ {
+ if (__rcs._M_length())
+ traits_type::copy(_M_local_data, __rcs._M_local_data,
+ _S_local_capacity + 1);
+ }
+ else
+ {
+ _M_data(__rcs._M_data());
+ _M_capacity(__rcs._M_allocated_capacity);
+ }
+
+ _M_length(__rcs._M_length());
+ __rcs._M_length(0);
+ __rcs._M_data(__rcs._M_local_data);
+ }
+#endif
+
template<typename _CharT, typename _Traits, typename _Alloc>
__sso_string_base<_CharT, _Traits, _Alloc>::
__sso_string_base(size_type __n, _CharT __c, const _Alloc& __a)
Index: include/bits/stl_list.h
===================================================================
--- include/bits/stl_list.h (revision 129378)
+++ include/bits/stl_list.h (working copy)
@@ -351,6 +351,15 @@
: _M_impl(__a)
{ _M_init(); }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ _List_base(_List_base&& __x)
+ : _M_impl(__x._M_get_Node_allocator())
+ {
+ _M_init();
+ _List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node);
+ }
+#endif
+
// This is what actually destroys the list.
~_List_base()
{ _M_clear(); }
@@ -521,8 +530,7 @@
* The contents of @a x are a valid, but unspecified %list.
*/
list(list&& __x)
- : _Base(__x._M_get_Node_allocator())
- { this->swap(__x); }
+ : _Base(std::forward<_Base>(__x)) { }
#endif
/**
Index: include/bits/stl_map.h
===================================================================
--- include/bits/stl_map.h (revision 129378)
+++ include/bits/stl_map.h (working copy)
@@ -186,9 +186,7 @@
* The contents of @a x are a valid, but unspecified %map.
*/
map(map&& __x)
- : _M_t(__x._M_t.key_comp(),
- __x._M_t._M_get_Node_allocator())
- { this->swap(__x); }
+ : _M_t(std::forward<_Rep_type>(__x._M_t)) { }
#endif
/**
Index: include/bits/stl_set.h
===================================================================
--- include/bits/stl_set.h (revision 129378)
+++ include/bits/stl_set.h (working copy)
@@ -204,9 +204,7 @@
* The contents of @a x are a valid, but unspecified %set.
*/
set(set&& __x)
- : _M_t(__x._M_t.key_comp(),
- __x._M_t._M_get_Node_allocator())
- { this->swap(__x); }
+ : _M_t(std::forward<_Rep_type>(__x._M_t)) { }
#endif
/**
Index: include/bits/stl_multimap.h
===================================================================
--- include/bits/stl_multimap.h (revision 129378)
+++ include/bits/stl_multimap.h (working copy)
@@ -184,9 +184,7 @@
* The contents of @a x are a valid, but unspecified %multimap.
*/
multimap(multimap&& __x)
- : _M_t(__x._M_t.key_comp(),
- __x._M_t._M_get_Node_allocator())
- { this->swap(__x); }
+ : _M_t(std::forward<_Rep_type>(__x._M_t)) { }
#endif
/**
Index: include/bits/stl_vector.h
===================================================================
--- include/bits/stl_vector.h (revision 129378)
+++ include/bits/stl_vector.h (working copy)
@@ -123,6 +123,19 @@
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
}
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ _Vector_base(_Vector_base&& __x)
+ : _M_impl(__x._M_get_Tp_allocator())
+ {
+ this->_M_impl._M_start = __x._M_impl._M_start;
+ this->_M_impl._M_finish = __x._M_impl._M_finish;
+ this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
+ __x._M_impl._M_start = 0;
+ __x._M_impl._M_finish = 0;
+ __x._M_impl._M_end_of_storage = 0;
+ }
+#endif
+
~_Vector_base()
{ _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage
- this->_M_impl._M_start); }
@@ -252,8 +265,7 @@
* The contents of @a x are a valid, but unspecified %vector.
*/
vector(vector&& __x)
- : _Base(__x._M_get_Tp_allocator())
- { this->swap(__x); }
+ : _Base(std::forward<_Base>(__x)) { }
#endif
/**
Index: include/bits/stl_deque.h
===================================================================
--- include/bits/stl_deque.h (revision 129378)
+++ include/bits/stl_deque.h (working copy)
@@ -393,6 +393,21 @@
: _M_impl(__a)
{ }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ _Deque_base(_Deque_base&& __x)
+ : _M_impl(__x._M_get_Tp_allocator())
+ {
+ _M_initialize_map(0);
+ if (__x._M_impl._M_map)
+ {
+ std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+ std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+ std::swap(this->_M_impl._M_map, __x._M_impl._M_map);
+ std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size);
+ }
+ }
+#endif
+
~_Deque_base();
protected:
@@ -736,8 +751,7 @@
* The contents of @a x are a valid, but unspecified %deque.
*/
deque(deque&& __x)
- : _Base(__x._M_get_Tp_allocator(), 0)
- { this->swap(__x); }
+ : _Base(std::forward<_Base>(__x)) { }
#endif
/**
Index: include/bits/stl_multiset.h
===================================================================
--- include/bits/stl_multiset.h (revision 129378)
+++ include/bits/stl_multiset.h (working copy)
@@ -197,9 +197,7 @@
* The contents of @a x are a valid, but unspecified %multiset.
*/
multiset(multiset&& __x)
- : _M_t(__x._M_t.key_comp(),
- __x._M_t._M_get_Node_allocator())
- { this->swap(__x); }
+ : _M_t(std::forward<_Rep_type>(__x._M_t)) { }
#endif
/**
Index: include/bits/stl_bvector.h
===================================================================
--- include/bits/stl_bvector.h (revision 129378)
+++ include/bits/stl_bvector.h (working copy)
@@ -416,6 +416,19 @@
_Bvector_base(const allocator_type& __a)
: _M_impl(__a) { }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ _Bvector_base(_Bvector_base&& __x)
+ : _M_impl(__x._M_get_Bit_allocator())
+ {
+ this->_M_impl._M_start = __x._M_impl._M_start;
+ this->_M_impl._M_finish = __x._M_impl._M_finish;
+ this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
+ __x._M_impl._M_start = _Bit_iterator();
+ __x._M_impl._M_finish = _Bit_iterator();
+ __x._M_impl._M_end_of_storage = 0;
+ }
+#endif
+
~_Bvector_base()
{ this->_M_deallocate(); }
@@ -515,8 +528,7 @@
#ifdef __GXX_EXPERIMENTAL_CXX0X__
vector(vector&& __x)
- : _Base(__x._M_get_Bit_allocator())
- { this->swap(__x); }
+ : _Base(std::forward<_Base>(__x)) { }
#endif
template<typename _InputIterator>
Index: include/bits/stl_tree.h
===================================================================
--- include/bits/stl_tree.h (revision 129378)
+++ include/bits/stl_tree.h (working copy)
@@ -607,6 +607,10 @@
}
}
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ _Rb_tree(_Rb_tree&& __x);
+#endif
+
~_Rb_tree()
{ _M_erase(_M_begin()); }
@@ -819,6 +823,30 @@
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
{ __x.swap(__y); }
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _Rb_tree(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&& __x)
+ : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
+ {
+ if (__x._M_root() != 0)
+ {
+ _M_root() = __x._M_root();
+ _M_leftmost() = __x._M_leftmost();
+ _M_rightmost() = __x._M_rightmost();
+ _M_root()->_M_parent = _M_end();
+
+ __x._M_root() = 0;
+ __x._M_leftmost() = __x._M_end();
+ __x._M_rightmost() = __x._M_end();
+
+ this->_M_impl._M_node_count = __x._M_impl._M_node_count;
+ __x._M_impl._M_node_count = 0;
+ }
+ }
+#endif
+
template<typename _Key, typename _Val, typename _KeyOfValue,
typename _Compare, typename _Alloc>
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
Index: testsuite/ext/vstring/moveable.cc
===================================================================
--- testsuite/ext/vstring/moveable.cc (revision 0)
+++ testsuite/ext/vstring/moveable.cc (revision 0)
@@ -0,0 +1,71 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2007 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 2, 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 COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on deque (via swap). If the implementation changed
+// this test may begin to fail.
+
+#include <ext/vstring.h>
+#include <utility>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::__sso_string a,b;
+ a.push_back('1');
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 );
+
+ __gnu_cxx::__sso_string c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == '1' );
+ VERIFY( b.size() == 0 );
+}
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::__rc_string a,b;
+ a.push_back('1');
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 );
+
+ __gnu_cxx::__rc_string c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == '1' );
+ VERIFY( b.size() == 0 );
+}
+
+int main()
+{
+ test01();
+ test02();
+ return 0;
+}
Index: testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
===================================================================
--- testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (revision 129370)
+++ testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 933 }
+// { dg-error "no matching" "" { target *-*-* } 945 }
// { dg-excess-errors "" }
#include <vector>
Index: testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
===================================================================
--- testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (revision 129370)
+++ testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 974 }
+// { dg-error "no matching" "" { target *-*-* } 986 }
// { dg-excess-errors "" }
#include <vector>
Index: testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
===================================================================
--- testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (revision 129370)
+++ testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 873 }
+// { dg-error "no matching" "" { target *-*-* } 885 }
// { dg-excess-errors "" }
#include <vector>
Index: testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
===================================================================
--- testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (revision 129370)
+++ testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 873 }
+// { dg-error "no matching" "" { target *-*-* } 885 }
// { dg-excess-errors "" }
#include <vector>
Index: testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
===================================================================
--- testsuite/23_containers/deque/requirements/dr438/assign_neg.cc (revision 129370)
+++ testsuite/23_containers/deque/requirements/dr438/assign_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1386 }
+// { dg-error "no matching" "" { target *-*-* } 1400 }
// { dg-excess-errors "" }
#include <deque>
Index: testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
===================================================================
--- testsuite/23_containers/deque/requirements/dr438/insert_neg.cc (revision 129370)
+++ testsuite/23_containers/deque/requirements/dr438/insert_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1466 }
+// { dg-error "no matching" "" { target *-*-* } 1480 }
// { dg-excess-errors "" }
#include <deque>
Index: testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
===================================================================
--- testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc (revision 129370)
+++ testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1321 }
+// { dg-error "no matching" "" { target *-*-* } 1335 }
// { dg-excess-errors "" }
#include <deque>
Index: testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
===================================================================
--- testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc (revision 129370)
+++ testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1321 }
+// { dg-error "no matching" "" { target *-*-* } 1335 }
// { dg-excess-errors "" }
#include <deque>
Index: testsuite/23_containers/list/requirements/dr438/assign_neg.cc
===================================================================
--- testsuite/23_containers/list/requirements/dr438/assign_neg.cc (revision 129370)
+++ testsuite/23_containers/list/requirements/dr438/assign_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1226 }
+// { dg-error "no matching" "" { target *-*-* } 1234 }
// { dg-excess-errors "" }
#include <list>
Index: testsuite/23_containers/list/requirements/dr438/insert_neg.cc
===================================================================
--- testsuite/23_containers/list/requirements/dr438/insert_neg.cc (revision 129370)
+++ testsuite/23_containers/list/requirements/dr438/insert_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1195 }
+// { dg-error "no matching" "" { target *-*-* } 1203 }
// { dg-excess-errors "" }
#include <list>
Index: testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
===================================================================
--- testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (revision 129370)
+++ testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1195 }
+// { dg-error "no matching" "" { target *-*-* } 1203 }
// { dg-excess-errors "" }
#include <list>
Index: testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
===================================================================
--- testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (revision 129370)
+++ testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (working copy)
@@ -19,7 +19,7 @@
// USA.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1195 }
+// { dg-error "no matching" "" { target *-*-* } 1203 }
// { dg-excess-errors "" }
#include <list>