[TSan] added annotation for suspicious (in terms of TSan) code
authorkhizmax <libcds.dev@gmail.com>
Tue, 29 Nov 2016 20:40:15 +0000 (23:40 +0300)
committerkhizmax <libcds.dev@gmail.com>
Tue, 29 Nov 2016 20:40:15 +0000 (23:40 +0300)
src/hp_gc.cpp

index 15c675ca6fd2b8fc5ae3941a1378b60328dcf39d..91bb6b548b6138d30428e2bcecd82e2f7d199830 100644 (file)
@@ -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;