From: khizmax Date: Wed, 3 May 2017 20:46:48 +0000 (+0300) Subject: Added ability to manually suppress wide-atomic support in compiler command line: X-Git-Tag: v2.3.0~46 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8594e61e616b35bc8ca382652edbdab2ed9a4382;p=libcds.git Added ability to manually suppress wide-atomic support in compiler command line: for 64bit platform: -DCDS_DISABLE_128BIT_ATOMIC for 32bit platform: -DCDS_DISABLE_64BIT_ATOMIC --- diff --git a/cds/compiler/clang/defs.h b/cds/compiler/clang/defs.h index 246456e8..8144de3f 100644 --- a/cds/compiler/clang/defs.h +++ b/cds/compiler/clang/defs.h @@ -140,13 +140,16 @@ // 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 diff --git a/cds/compiler/gcc/defs.h b/cds/compiler/gcc/defs.h index 0d8e5c45..2f78f697 100644 --- a/cds/compiler/gcc/defs.h +++ b/cds/compiler/gcc/defs.h @@ -113,13 +113,16 @@ // 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