aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely.gcc@gmail.com>2012-08-03 00:27:48 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2012-08-03 01:27:48 +0100
commit6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76 (patch)
treef1173ab656fbe2a4579047297db9a6d0fcea6a48
parentcbd782e1af15637c364840ee8bb2515d66cb8b5d (diff)
downloadgcc-6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76.zip
gcc-6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76.tar.gz
gcc-6e48db73ed88eeb3e1025b28aa49c4f5ee4f3a76.tar.bz2
memory: Include auto_ptr.h later.
* include/std/memory: Include auto_ptr.h later. * include/bits/shared_ptr.h (shared_ptr(auto_ptr<_Up>&&): Remove definition. * include/bits/shared_ptr_base.h (__shared_ptr(auto_ptr<_Up>&&): Likewise. * include/bits/unique_ptr.h (unique_ptr(auto_ptr<_Up>&&): Likewise. * include/backward/auto_ptr.h (unique_ptr(auto_ptr<_Up>&&): Define. (shared_ptr(auto_ptr<_Up>&&, __shared_ptr(auto_ptr<_Up>&&): Likewise. * include/std/future: Reduce header dependencies. * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line numbers. * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise. * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Likewise. From-SVN: r190109
-rw-r--r--libstdc++-v3/ChangeLog16
-rw-r--r--libstdc++-v3/include/backward/auto_ptr.h36
-rw-r--r--libstdc++-v3/include/bits/shared_ptr.h5
-rw-r--r--libstdc++-v3/include/bits/shared_ptr_base.h21
-rw-r--r--libstdc++-v3/include/bits/unique_ptr.h9
-rw-r--r--libstdc++-v3/include/std/future8
-rw-r--r--libstdc++-v3/include/std/memory8
-rw-r--r--libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc6
-rw-r--r--libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc6
10 files changed, 82 insertions, 37 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 76efb20..26991cb 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,19 @@
+2012-08-03 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/std/memory: Include auto_ptr.h later.
+ * include/bits/shared_ptr.h (shared_ptr(auto_ptr<_Up>&&): Remove
+ definition.
+ * include/bits/shared_ptr_base.h (__shared_ptr(auto_ptr<_Up>&&):
+ Likewise.
+ * include/bits/unique_ptr.h (unique_ptr(auto_ptr<_Up>&&): Likewise.
+ * include/backward/auto_ptr.h (unique_ptr(auto_ptr<_Up>&&): Define.
+ (shared_ptr(auto_ptr<_Up>&&, __shared_ptr(auto_ptr<_Up>&&): Likewise.
+ * include/std/future: Reduce header dependencies.
+ * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line
+ numbers.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
+ * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Likewise.
+
2012-07-30 François Dumont <fdumont@gcc.gnu.org>
* include/bits/c++config (_GLIBCXX_END_NAMESPACE_CONTAINER): Fix
diff --git a/libstdc++-v3/include/backward/auto_ptr.h b/libstdc++-v3/include/backward/auto_ptr.h
index 3c91c08..01702f7 100644
--- a/libstdc++-v3/include/backward/auto_ptr.h
+++ b/libstdc++-v3/include/backward/auto_ptr.h
@@ -1,6 +1,6 @@
// auto_ptr implementation -*- C++ -*-
-// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2007-2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -289,6 +289,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typedef void element_type;
} _GLIBCXX_DEPRECATED;
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<_Lock_policy _Lp>
+ template<typename _Tp>
+ inline
+ __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r)
+ : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get()))
+ { __r.release(); }
+
+ template<typename _Tp, _Lock_policy _Lp>
+ template<typename _Tp1>
+ inline
+ __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r)
+ : _M_ptr(__r.get()), _M_refcount()
+ {
+ __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
+ static_assert( sizeof(_Tp1) > 0, "incomplete type" );
+ _Tp1* __tmp = __r.get();
+ _M_refcount = __shared_count<_Lp>(std::move(__r));
+ __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
+ }
+
+ template<typename _Tp>
+ template<typename _Tp1>
+ inline
+ shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r)
+ : __shared_ptr<_Tp>(std::move(__r)) { }
+
+ template<typename _Tp, typename _Dp>
+ template<typename _Up, typename>
+ inline
+ unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept
+ : _M_t(__u.release(), deleter_type()) { }
+#endif
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h
index 070d2d1..e1c1eb9 100644
--- a/libstdc++-v3/include/bits/shared_ptr.h
+++ b/libstdc++-v3/include/bits/shared_ptr.h
@@ -1,6 +1,6 @@
// shared_ptr and weak_ptr implementation -*- C++ -*-
-// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2007-2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -250,8 +250,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#if _GLIBCXX_USE_DEPRECATED
template<typename _Tp1>
- shared_ptr(std::auto_ptr<_Tp1>&& __r)
- : __shared_ptr<_Tp>(std::move(__r)) { }
+ shared_ptr(std::auto_ptr<_Tp1>&& __r);
#endif
template<typename _Tp1, typename _Del>
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 39449f1..1ccd5ef 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -1,7 +1,6 @@
// shared_ptr and weak_ptr implementation details -*- C++ -*-
-// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
-// Free Software Foundation, Inc.
+// Copyright (C) 2007-2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -54,6 +53,10 @@ namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
+#if _GLIBCXX_USE_DEPRECATED
+ template<typename> class auto_ptr;
+#endif
+
/**
* @brief Exception possibly thrown by @c shared_ptr.
* @ingroup exceptions
@@ -537,9 +540,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Special case for auto_ptr<_Tp> to provide the strong guarantee.
template<typename _Tp>
explicit
- __shared_count(std::auto_ptr<_Tp>&& __r)
- : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get()))
- { __r.release(); }
+ __shared_count(std::auto_ptr<_Tp>&& __r);
#endif
// Special case for unique_ptr<_Tp,_Del> to provide the strong guarantee.
@@ -859,15 +860,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#if _GLIBCXX_USE_DEPRECATED
// Postcondition: use_count() == 1 and __r.get() == 0
template<typename _Tp1>
- __shared_ptr(std::auto_ptr<_Tp1>&& __r)
- : _M_ptr(__r.get()), _M_refcount()
- {
- __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
- static_assert( sizeof(_Tp1) > 0, "incomplete type" );
- _Tp1* __tmp = __r.get();
- _M_refcount = __shared_count<_Lp>(std::move(__r));
- __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
- }
+ __shared_ptr(std::auto_ptr<_Tp1>&& __r);
#endif
/* TODO: use delegating constructor */
diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index 0a12799..9b736d4 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -1,6 +1,6 @@
// unique_ptr implementation -*- C++ -*-
-// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2008-2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -45,6 +45,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @{
*/
+#if _GLIBCXX_USE_DEPRECATED
+ template<typename> class auto_ptr;
+#endif
+
/// Primary template, default_delete.
template<typename _Tp>
struct default_delete
@@ -161,8 +165,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::enable_if<std::is_convertible<_Up*, _Tp*>::value
&& std::is_same<_Dp,
default_delete<_Tp>>::value>::type>
- unique_ptr(auto_ptr<_Up>&& __u) noexcept
- : _M_t(__u.release(), deleter_type()) { }
+ unique_ptr(auto_ptr<_Up>&& __u) noexcept;
#endif
// Destructor.
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index 962400b..a8d7112 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -1,6 +1,6 @@
// <future> -*- C++ -*-
-// Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+// Copyright (C) 2009-2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -36,14 +36,16 @@
#else
#include <functional>
-#include <memory>
#include <mutex>
#include <thread>
#include <condition_variable>
#include <system_error>
-#include <exception>
#include <atomic>
#include <bits/functexcept.h>
+#include <bits/unique_ptr.h>
+#include <bits/shared_ptr.h>
+#include <bits/uses_allocator.h>
+#include <bits/alloc_traits.h>
namespace std _GLIBCXX_VISIBILITY(default)
{
diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory
index e846eba..73482ff 100644
--- a/libstdc++-v3/include/std/memory
+++ b/libstdc++-v3/include/std/memory
@@ -1,8 +1,6 @@
// <memory> -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-// 2009, 2010, 2011
-// Free Software Foundation, Inc.
+// Copyright (C) 2001-2012 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -80,11 +78,11 @@
# include <type_traits>
# include <functional>
# include <debug/debug.h>
+# include <bits/unique_ptr.h>
+# include <bits/shared_ptr.h>
# if _GLIBCXX_USE_DEPRECATED
# include <backward/auto_ptr.h>
# endif
-# include <bits/unique_ptr.h>
-# include <bits/shared_ptr.h>
#else
# include <backward/auto_ptr.h>
#endif
diff --git a/libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc b/libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
index 9d779ac..a9bba978 100644
--- a/libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
@@ -1,7 +1,7 @@
// { dg-options "-std=gnu++0x " }
// { dg-do compile }
-// Copyright (C) 2011 Free Software Foundation
+// Copyright (C) 2011-2012 Free Software Foundation
//
// 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
@@ -27,4 +27,4 @@ struct D : B { };
D d;
std::default_delete<B[]> db;
typedef decltype(db(&d)) type; // { dg-error "use of deleted function" }
-// { dg-error "declared here" "" { target *-*-* } 83 }
+// { dg-error "declared here" "" { target *-*-* } 87 }
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
index d2110ca..dc9d803 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
@@ -1,7 +1,7 @@
// { dg-options "-std=gnu++0x" }
// { dg-do compile }
-// Copyright (C) 2010, 2011, 2012 Free Software Foundation
+// Copyright (C) 2010-2012 Free Software Foundation
//
// 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
@@ -32,9 +32,9 @@ void test01()
{
X* px = 0;
std::shared_ptr<X> p1(px); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 775 }
+ // { dg-error "incomplete" "" { target *-*-* } 776 }
std::shared_ptr<X> p9(ap()); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 869 }
+ // { dg-error "incomplete" "" { target *-*-* } 310 }
}
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
index 1ed53ee..d72821e 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
@@ -1,7 +1,7 @@
// { dg-options "-std=gnu++0x" }
// { dg-do compile }
-// Copyright (C) 2011 Free Software Foundation
+// Copyright (C) 2011-2012 Free Software Foundation
//
// 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
@@ -41,10 +41,10 @@ void f()
std::unique_ptr<int, B&> ub(nullptr, b);
std::unique_ptr<int, D&> ud(nullptr, d);
ub = std::move(ud);
-// { dg-error "use of deleted function" "" { target *-*-* } 189 }
+// { dg-error "use of deleted function" "" { target *-*-* } 192 }
std::unique_ptr<int[], B&> uba(nullptr, b);
std::unique_ptr<int[], D&> uda(nullptr, d);
uba = std::move(uda);
-// { dg-error "use of deleted function" "" { target *-*-* } 329 }
+// { dg-error "use of deleted function" "" { target *-*-* } 332 }
}