// double-width CAS support
#if CDS_BUILD_BITS == 64
-# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+ // gcc-4.8 does not support 16-word (128bit) atomics
+# if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 ) && CDS_COMPILER_VERSION >= 40900
# define CDS_DCAS_SUPPORT
# endif
#else
typedef cds::intrusive::CachedFreeList<cds::intrusive::FreeList> cached_free_list;
CDSSTRESS_FREELIST_F( CachedFreeList, cached_free_list )
+#ifdef CDS_DCAS_SUPPORT
TEST_F( put_get, TaggetFreeList )
{
struct tagged_ptr {
else
std::cout << "Double-width CAS is not supported\n";
}
+#endif
} // namespace
typedef cds::intrusive::CachedFreeList<cds::intrusive::FreeList> cached_free_list;
CDSSTRESS_FREELIST_F( CachedFreeList, cached_free_list )
+#ifdef CDS_DCAS_SUPPORT
TEST_F( put_get_single, TaggetFreeList )
{
struct tagged_ptr {
else
std::cout << "Double-width CAS is not supported\n";
}
+#endif
} // namespace