OSDN Git Service

PR libstdc++/52104
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Feb 2012 23:55:51 +0000 (23:55 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Feb 2012 23:55:51 +0000 (23:55 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183920 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/future
libstdc++-v3/src/c++11/future.cc

index 4e92358..799be7c 100644 (file)
@@ -1,5 +1,13 @@
 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
        * python/libstdcxx/v6/printers.py (StdPointerPrinter): Rename to...
        (SharedPointerPrinter): This. Also show weak count.
index 1093e3f..962400b 100644 (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.
index dab0774..61a9729 100644 (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