[patch] fix libstdc++/59215

Jonathan Wakely jwakely@redhat.com
Mon Jan 27 17:58:00 GMT 2014


This fixes a tsan warning in shared_ptr by replacing the non-atomic
load with a call to _M_get_use_count() which does a relaxed atomic
load.

Tested x86_64-linux, committed to trunk. Will commit to 4.8 soon too.


-------------- next part --------------
commit a795f4e757d0f0ca11324a2c4f62cbe1bd876ec7
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Jan 27 17:01:25 2014 +0000

    	PR libstdc++/59215
    	* include/bits/shared_ptr_base.h
    	(_Sp_counted_base<_S_atomic>::_M_add_ref_lock()): Use relaxed atomic
    	load.

diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 83724e4..1c3a47d 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -233,7 +233,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _M_add_ref_lock()
     {
       // Perform lock-free add-if-not-zero operation.
-      _Atomic_word __count = _M_use_count;
+      _Atomic_word __count = _M_get_use_count();
       do
 	{
 	  if (__count == 0)


More information about the Gcc-patches mailing list