From: khizmax Date: Mon, 15 May 2017 19:53:17 +0000 (+0300) Subject: A magic code is found to fix CLang 3.6-3.7 mass test failures for FeldmanHashSet... X-Git-Tag: v2.3.0~27 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a94f24ba2b77d6cdfab38d86c346d05b3127c4f8;p=libcds.git A magic code is found to fix CLang 3.6-3.7 mass test failures for FeldmanHashSet even in single-threaded ubit tests --- diff --git a/cds/urcu/details/gp.h b/cds/urcu/details/gp.h index 512a0b2b..fa8cf8a6 100644 --- a/cds/urcu/details/gp.h +++ b/cds/urcu/details/gp.h @@ -87,6 +87,11 @@ namespace cds { namespace urcu { namespace details { uint32_t tmp = pRec->m_nAccessControl.load( atomics::memory_order_relaxed ); assert( (tmp & rcu_class::c_nNestMask) > 0 ); +#if CDS_COMPILER == CDS_COMPILER_CLANG && CDS_COMPILER_VERSION < 30800 + // CLang 3.6-3.7: some tests of intrusive::FeldmanHashSet based on general-purpose RCU + // are failed even in single-threaded mode (unit tests) without magic compiler barrier below + CDS_COMPILER_RW_BARRIER; +#endif pRec->m_nAccessControl.store( tmp - 1, atomics::memory_order_release ); }