This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]