Splits deque take & steal into 2 test caess
[libcds.git] / cds / compiler / clang / defs.h
index 246456e8a838e11a0060888047a81082d9bbcf51..8144de3f02f055a2480bf37238b8f02a5bdfe343 100644 (file)
 
 
 // double-width CAS support - only for libc++
+// You can manually suppress wide-atomic support by defining in compiler command line:
+//  for 64bit platform: -DCDS_DISABLE_128BIT_ATOMIC
+//  for 32bit platform: -DCDS_DISABLE_64BIT_ATOMIC
 #ifdef _LIBCPP_VERSION
 #   if CDS_BUILD_BITS == 64
-#       ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+#       if !defined( CDS_DISABLE_128BIT_ATOMIC ) && defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 )
 #           define CDS_DCAS_SUPPORT
 #       endif
 #   else
-#       ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+#       if !defined( CDS_DISABLE_64BIT_ATOMIC ) && defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 )
 #           define CDS_DCAS_SUPPORT
 #       endif
 #   endif