3 #ifndef CDSLIB_COMPILER_GCC_DEFS_H
4 #define CDSLIB_COMPILER_GCC_DEFS_H
7 #define CDS_COMPILER_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
9 #if CDS_COMPILER_VERSION < 40800
10 # error "Compiler version error. GCC version 4.8.0 and above is supported"
15 # define CDS_COMPILER__NAME ("GNU C++ " __VERSION__)
17 # define CDS_COMPILER__NAME "GNU C++"
19 #define CDS_COMPILER__NICK "gcc"
21 #include <cds/compiler/gcc/compiler_macro.h>
23 #define alignof __alignof__
25 // ***************************************
28 // C++11 inline namespace
29 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
32 #define CDS_CONSTEXPR constexpr
35 #define CDS_NOEXCEPT_SUPPORT noexcept
36 #define CDS_NOEXCEPT_SUPPORT_(expr) noexcept(expr)
38 // C++11 thread_local keyword
39 #define CDS_CXX11_THREAD_LOCAL_SUPPORT
41 // Full SFINAE support
42 #define CDS_CXX11_SFINAE
44 // Inheriting constructors
45 #define CDS_CXX11_INHERITING_CTOR
47 // *************************************************
49 // If you run under Thread Sanitizer, pass -DCDS_THREAD_SANITIZER_ENABLED in compiler command line
50 //#define CDS_THREAD_SANITIZER_ENABLED
52 // *************************************************
55 #define CDS_TYPE_ALIGNMENT(n) __attribute__ ((aligned (n)))
56 #define CDS_CLASS_ALIGNMENT(n) __attribute__ ((aligned (n)))
57 #define CDS_DATA_ALIGNMENT(n) __attribute__ ((aligned (n)))
60 #include <cds/compiler/gcc/compiler_barriers.h>
62 #endif // #ifndef CDSLIB_COMPILER_GCC_DEFS_H