From 8594e61e616b35bc8ca382652edbdab2ed9a4382 Mon Sep 17 00:00:00 2001 From: khizmax Date: Wed, 3 May 2017 23:46:48 +0300 Subject: [PATCH] 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 --- cds/compiler/clang/defs.h | 7 +++++-- cds/compiler/gcc/defs.h | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) 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 -- 2.34.1