From a15024e630fe34f6ceb12151831664b028b26b09 Mon Sep 17 00:00:00 2001
From: Paolo Carlini <pcarlini@suse.de>
Date: Thu, 10 Nov 2005 12:03:50 +0000
Subject: [PATCH] boost_shared_ptr.h (_Sp_counted_base::release, [...]):
 Protect barriers with __GTHREADS.

2005-11-10  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release,
	weak_release): Protect barriers with __GTHREADS.

From-SVN: r106733
---
 libstdc++-v3/ChangeLog                      | 5 +++++
 libstdc++-v3/include/tr1/boost_shared_ptr.h | 9 +++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 19d2d49b041a..0ca7b0cfa490 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-10  Paolo Carlini  <pcarlini@suse.de>
+
+	* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release,
+	weak_release): Protect barriers with __GTHREADS.
+
 2005-11-10  Paolo Carlini  <pcarlini@suse.de>
 	    Peter Dimov  <pdimov@mmltd.net>
 
diff --git a/libstdc++-v3/include/tr1/boost_shared_ptr.h b/libstdc++-v3/include/tr1/boost_shared_ptr.h
index 3eb94fd980b4..2c3e27ca5377 100644
--- a/libstdc++-v3/include/tr1/boost_shared_ptr.h
+++ b/libstdc++-v3/include/tr1/boost_shared_ptr.h
@@ -151,10 +151,10 @@ public:
     if (__gnu_cxx::__exchange_and_add(&_M_use_count, -1) == 1)
       {
 	dispose();
-	
+#ifdef __GTHREADS	
 	_GLIBCXX_READ_MEM_BARRIER;
 	_GLIBCXX_WRITE_MEM_BARRIER;
-	
+#endif
 	if (__gnu_cxx::__exchange_and_add(&_M_weak_count, -1) == 1)
 	  destroy();
       }
@@ -171,8 +171,10 @@ public:
   {
     if (__gnu_cxx::__exchange_and_add(&_M_weak_count, -1) == 1)
       {
+#ifdef __GTHREADS
 	_GLIBCXX_READ_MEM_BARRIER;
 	_GLIBCXX_WRITE_MEM_BARRIER;
+#endif
 	destroy();
       }
   }
@@ -326,7 +328,6 @@ public:
   { return _M_pi ? _M_pi->get_deleter(__ti) : 0; }
 };
 
-
 class weak_count
 {
 private:
@@ -418,6 +419,7 @@ shared_count::shared_count(const weak_count& __r)
     __throw_bad_weak_ptr();
 }
 
+
 // fwd decls
 template<typename _Tp>
   class weak_ptr;
@@ -850,7 +852,6 @@ template<typename _Tp>
 #endif
     } // XXX MT
 
-
     long
     use_count() const // never throws
     { return _M_refcount.use_count(); }