summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2013-04-24 22:00:16 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2013-04-24 22:00:16 +0000
commit001c0d29c11a875ebaf61ffe3050be1a4ddaba27 (patch)
treee2f44526ebfdbc4e96f7cc71152db007247579d7
parent74855d080d0657185317ae63bac158040908c3fe (diff)
downloadgcc-001c0d29c11a875ebaf61ffe3050be1a4ddaba27.tar.gz
PR libstdc++/56905
* libsupc++/exception_ptr.h (copy_exception): Deprecate and move implementation to make_exception_ptr. * include/std/future (_State_base::_M_break_promise): Replace copy_exception with make_exception_ptr. * testsuite/18_support/exception_ptr/move.cc: Likewise. * testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise. * testsuite/30_threads/future/members/get2.cc: Likewise. * testsuite/30_threads/promise/members/set_exception.cc: Likewise. * testsuite/30_threads/promise/members/set_exception2.cc: Likewise. * testsuite/30_threads/promise/members/set_value2.cc: Likewise. * testsuite/30_threads/shared_future/members/get2.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198265 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog15
-rw-r--r--libstdc++-v3/include/std/future2
-rw-r--r--libstdc++-v3/libsupc++/exception_ptr.h13
-rw-r--r--libstdc++-v3/testsuite/18_support/exception_ptr/move.cc2
-rw-r--r--libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc4
-rw-r--r--libstdc++-v3/testsuite/30_threads/future/members/get2.cc6
-rw-r--r--libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc6
-rw-r--r--libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc2
-rw-r--r--libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc6
10 files changed, 39 insertions, 19 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9a966b098ca..b8c6f2886cb 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,18 @@
+2013-04-11 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/56905
+ * libsupc++/exception_ptr.h (copy_exception): Deprecate and
+ move implementation to make_exception_ptr.
+ * include/std/future (_State_base::_M_break_promise): Replace
+ copy_exception with make_exception_ptr.
+ * testsuite/18_support/exception_ptr/move.cc: Likewise.
+ * testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise.
+ * testsuite/30_threads/future/members/get2.cc: Likewise.
+ * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
+ * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
+ * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
+ * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
+
2013-04-22 Jason Merrill <jason@redhat.com>
* src/c++11/hashtable_c++0x.cc: Include ext/aligned_buffer.h.
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index a86a7ca1ee0..6d6b32b1f4d 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -361,7 +361,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
if (static_cast<bool>(__res))
{
error_code __ec(make_error_code(future_errc::broken_promise));
- __res->_M_error = copy_exception(future_error(__ec));
+ __res->_M_error = make_exception_ptr(future_error(__ec));
{
lock_guard<mutex> __lock(_M_mutex);
_M_result.swap(__res);
diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h
index bbf8f85d47b..effab347c85 100644
--- a/libstdc++-v3/libsupc++/exception_ptr.h
+++ b/libstdc++-v3/libsupc++/exception_ptr.h
@@ -166,7 +166,7 @@ namespace std
/// Obtain an exception_ptr pointing to a copy of the supplied object.
template<typename _Ex>
exception_ptr
- copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
+ make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
{
__try
{
@@ -183,10 +183,15 @@ namespace std
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 1130. copy_exception name misleading
/// Obtain an exception_ptr pointing to a copy of the supplied object.
+ /// This function is deprecated, use std::make_exception_ptr instead.
template<typename _Ex>
- exception_ptr
- make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
- { return std::copy_exception<_Ex>(__ex); }
+ exception_ptr
+ copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT _GLIBCXX_DEPRECATED;
+
+ template<typename _Ex>
+ exception_ptr
+ copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
+ { return std::make_exception_ptr<_Ex>(__ex); }
// @} group exceptions
} // namespace std
diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
index 2b7284d699d..9c3df1ee546 100644
--- a/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
+++ b/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
@@ -28,7 +28,7 @@ void test01()
{
bool test = true;
- std::exception_ptr p1 = std::copy_exception(test);
+ std::exception_ptr p1 = std::make_exception_ptr(test);
std::exception_ptr p2 = std::move(p1);
VERIFY( p1 == 0 );
VERIFY( !(p2 == 0) );
diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
index 430913c1b9a..39a57feb97c 100644
--- a/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
+++ b/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
@@ -34,7 +34,7 @@ void test01()
using namespace std;
try {
- rethrow_exception(copy_exception(0));
+ rethrow_exception(make_exception_ptr(0));
} catch(...) {
}
}
@@ -45,7 +45,7 @@ void test02()
using namespace std;
try {
- rethrow_exception(copy_exception(runtime_error("test")));
+ rethrow_exception(make_exception_ptr(runtime_error("test")));
} catch(exception &e) {
VERIFY( typeid(e) == typeid(runtime_error) );
VERIFY( strcmp(e.what(), "test") == 0 );
diff --git a/libstdc++-v3/testsuite/30_threads/future/members/get2.cc b/libstdc++-v3/testsuite/30_threads/future/members/get2.cc
index b74c84d2551..2f052405cf6 100644
--- a/libstdc++-v3/testsuite/30_threads/future/members/get2.cc
+++ b/libstdc++-v3/testsuite/30_threads/future/members/get2.cc
@@ -37,7 +37,7 @@ void test01()
std::promise<int> p1;
std::future<int> f1(p1.get_future());
- p1.set_exception(std::copy_exception(value));
+ p1.set_exception(std::make_exception_ptr(value));
try
{
(void) f1.get();
@@ -57,7 +57,7 @@ void test02()
std::promise<int&> p1;
std::future<int&> f1(p1.get_future());
- p1.set_exception(std::copy_exception(value));
+ p1.set_exception(std::make_exception_ptr(value));
try
{
(void) f1.get();
@@ -77,7 +77,7 @@ void test03()
std::promise<void> p1;
std::future<void> f1(p1.get_future());
- p1.set_exception(std::copy_exception(value));
+ p1.set_exception(std::make_exception_ptr(value));
try
{
f1.get();
diff --git a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
index c7f1df2fc88..920c1169631 100644
--- a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
+++ b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
@@ -36,7 +36,7 @@ void test01()
VERIFY( f1.valid() );
- p1.set_exception(std::copy_exception(0));
+ p1.set_exception(std::make_exception_ptr(0));
try
{
diff --git a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
index 527cfbb93b1..84c26d6ffcb 100644
--- a/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
+++ b/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
@@ -34,11 +34,11 @@ void test01()
std::promise<int> p1;
std::future<int> f1 = p1.get_future();
- p1.set_exception(std::copy_exception(0));
+ p1.set_exception(std::make_exception_ptr(0));
try
{
- p1.set_exception(std::copy_exception(1));
+ p1.set_exception(std::make_exception_ptr(1));
VERIFY( false );
}
catch (std::future_error& e)
@@ -72,7 +72,7 @@ void test02()
try
{
- p1.set_exception(std::copy_exception(0));
+ p1.set_exception(std::make_exception_ptr(0));
VERIFY( false );
}
catch (std::future_error& e)
diff --git a/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc b/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
index fcba7456b10..2ee5987f02b 100644
--- a/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
+++ b/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
@@ -65,7 +65,7 @@ void test02()
try
{
- p1.set_exception(std::copy_exception(4));
+ p1.set_exception(std::make_exception_ptr(4));
VERIFY( false );
}
catch (std::future_error& e)
diff --git a/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc b/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
index 1b8ccea36e0..2fed6d510ed 100644
--- a/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
+++ b/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
@@ -38,7 +38,7 @@ void test01()
std::shared_future<int> f1(p1.get_future());
std::shared_future<int> f2(f1);
- p1.set_exception(std::copy_exception(value));
+ p1.set_exception(std::make_exception_ptr(value));
try
{
(void) f1.get();
@@ -67,7 +67,7 @@ void test02()
std::shared_future<int&> f1(p1.get_future());
std::shared_future<int&> f2(f1);
- p1.set_exception(std::copy_exception(value));
+ p1.set_exception(std::make_exception_ptr(value));
try
{
(void) f1.get();
@@ -96,7 +96,7 @@ void test03()
std::shared_future<void> f1(p1.get_future());
std::shared_future<void> f2(f1);
- p1.set_exception(std::copy_exception(value));
+ p1.set_exception(std::make_exception_ptr(value));
try
{
f1.get();