Commit be38506d by Jonathan Wakely Committed by Jonathan Wakely

re PR libstdc++/52104 (go1 fails to run on Solaris 10/11 x86 with with gld)

	PR libstdc++/52104
	* include/std/future (__future_base::_Async_state_common): Define
	destructor inline for targets without TLS.
	* src/c++11/future.cc (__future_base::_Async_state_common): Only
	define destructor for TLS targets.

From-SVN: r183920
parent 148ea7d8
2012-02-05 Jonathan Wakely <jwakely.gcc@gmail.com> 2012-02-05 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/52104
* include/std/future (__future_base::_Async_state_common): Define
destructor inline for targets without TLS.
* src/c++11/future.cc (__future_base::_Async_state_common): Only
define destructor for TLS targets.
2012-02-05 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/51956 PR libstdc++/51956
* python/libstdcxx/v6/printers.py (StdPointerPrinter): Rename to... * python/libstdcxx/v6/printers.py (StdPointerPrinter): Rename to...
(SharedPointerPrinter): This. Also show weak count. (SharedPointerPrinter): This. Also show weak count.
......
...@@ -1425,7 +1425,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1425,7 +1425,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
class __future_base::_Async_state_common : public __future_base::_State_base class __future_base::_Async_state_common : public __future_base::_State_base
{ {
protected: protected:
#ifdef _GLIBCXX_HAVE_TLS
~_Async_state_common(); ~_Async_state_common();
#else
~_Async_state_common() { _M_join(); }
#endif
// Allow non-timed waiting functions to block until the thread completes, // Allow non-timed waiting functions to block until the thread completes,
// as if joined. // as if joined.
......
...@@ -85,11 +85,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -85,11 +85,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__future_base::_State_base::~_State_base() = default; __future_base::_State_base::~_State_base() = default;
#ifdef _GLIBCXX_HAVE_TLS
__future_base::_Async_state_common::~_Async_state_common() { _M_join(); } __future_base::_Async_state_common::~_Async_state_common() { _M_join(); }
// Explicit instantiation due to -fno-implicit-instantiation. // Explicit instantiation due to -fno-implicit-instantiation.
template void call_once(once_flag&, void (thread::*&&)(), reference_wrapper<thread>&&); template void call_once(once_flag&, void (thread::*&&)(), reference_wrapper<thread>&&);
#endif #endif
#endif
_GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION
} // namespace std } // namespace std
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment