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
This commit is contained in:
Jonathan Wakely 2012-02-05 23:55:51 +00:00 committed by Jonathan Wakely
parent 148ea7d8ef
commit be38506d7c
3 changed files with 14 additions and 0 deletions

View file

@ -1,3 +1,11 @@
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

View file

@ -1425,7 +1425,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
class __future_base::_Async_state_common : public __future_base::_State_base
{
protected:
#ifdef _GLIBCXX_HAVE_TLS
~_Async_state_common();
#else
~_Async_state_common() { _M_join(); }
#endif
// Allow non-timed waiting functions to block until the thread completes,
// as if joined.

View file

@ -85,11 +85,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__future_base::_State_base::~_State_base() = default;
#ifdef _GLIBCXX_HAVE_TLS
__future_base::_Async_state_common::~_Async_state_common() { _M_join(); }
// Explicit instantiation due to -fno-implicit-instantiation.
template void call_once(once_flag&, void (thread::*&&)(), reference_wrapper<thread>&&);
#endif
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std