Added ability to manually suppress wide-atomic support in compiler command line:
authorkhizmax <libcds.dev@gmail.com>
Wed, 3 May 2017 20:46:48 +0000 (23:46 +0300)
committerkhizmax <libcds.dev@gmail.com>
Wed, 3 May 2017 20:46:48 +0000 (23:46 +0300)
 for 64bit platform: -DCDS_DISABLE_128BIT_ATOMIC
 for 32bit platform: -DCDS_DISABLE_64BIT_ATOMIC

cds/compiler/clang/defs.h
cds/compiler/gcc/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
index 0d8e5c450ab0a8ec4196820219f230f00cbcc5b1..2f78f6970b8b8c49dc508140fdf8b8acc326f150 100644 (file)
 // double-width CAS support
 // note: gcc-4.8 does not support double-word atomics
 //       gcc-4.9: a lot of crashes when use DCAS
+// 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
 #if CDS_COMPILER_VERSION >= 50000
 #   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