From: khizmax <libcds.dev@gmail.com>
Date: Tue, 29 Nov 2016 20:40:15 +0000 (+0300)
Subject: [TSan] added annotation for suspicious (in terms of TSan) code
X-Git-Tag: v2.2.0~32
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f0d7195f5eae770fa1a1cf13d403a31c7d30b2a2;p=libcds.git

[TSan] added annotation for suspicious (in terms of TSan) code
---

diff --git a/src/hp_gc.cpp b/src/hp_gc.cpp
index 15c675ca..91bb6b54 100644
--- a/src/hp_gc.cpp
+++ b/src/hp_gc.cpp
@@ -150,8 +150,9 @@ namespace cds { namespace gc {
 
             hplist_node * pOldHead = m_pListHead.load( atomics::memory_order_acquire );
             do {
+                // TSan: Next CAS release orders the memory
+                CDS_TSAN_ANNOTATE_HAPPENS_BEFORE(&hprec->m_pNextNode );
                 hprec->m_pNextNode = pOldHead;
-                CDS_TSAN_ANNOTATE_HAPPENS_BEFORE( &( hprec->m_pNextNode ));
             } while ( !m_pListHead.compare_exchange_weak( pOldHead, hprec, atomics::memory_order_release, atomics::memory_order_relaxed ));
 
             return hprec;