ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libecb/ecb.h
(Generate patch)

Comparing libecb/ecb.h (file contents):
Revision 1.139 by root, Tue Oct 14 14:39:06 2014 UTC vs.
Revision 1.140 by sf-exg, Tue Oct 14 22:14:32 2014 UTC

102 102
103#if __clang__ && defined(__has_builtin) 103#if __clang__ && defined(__has_builtin)
104 #define ECB_CLANG_BUILTIN(x) __has_builtin(x) 104 #define ECB_CLANG_BUILTIN(x) __has_builtin(x)
105#else 105#else
106 #define ECB_CLANG_BUILTIN(x) 0 106 #define ECB_CLANG_BUILTIN(x) 0
107#endif
108
109#if __clang__ && defined(__has_extension)
110 #define ECB_CLANG_EXTENSION(x) __has_extension(x)
111#else
112 #define ECB_CLANG_EXTENSION(x) 0
107#endif 113#endif
108 114
109#define ECB_CPP (__cplusplus+0) 115#define ECB_CPP (__cplusplus+0)
110#define ECB_CPP11 (__cplusplus >= 201103L) 116#define ECB_CPP11 (__cplusplus >= 201103L)
111 117
195 /* see comment below (stdatomic.h) about the C11 memory model. */ 201 /* see comment below (stdatomic.h) about the C11 memory model. */
196 #define ECB_MEMORY_FENCE __atomic_thread_fence (__ATOMIC_SEQ_CST) 202 #define ECB_MEMORY_FENCE __atomic_thread_fence (__ATOMIC_SEQ_CST)
197 #define ECB_MEMORY_FENCE_ACQUIRE __atomic_thread_fence (__ATOMIC_ACQUIRE) 203 #define ECB_MEMORY_FENCE_ACQUIRE __atomic_thread_fence (__ATOMIC_ACQUIRE)
198 #define ECB_MEMORY_FENCE_RELEASE __atomic_thread_fence (__ATOMIC_RELEASE) 204 #define ECB_MEMORY_FENCE_RELEASE __atomic_thread_fence (__ATOMIC_RELEASE)
199 205
200 /* The __has_feature syntax from clang is so misdesigned that we cannot use it 206 #elif ECB_CLANG_EXTENSION(c_atomic)
201 * without risking compile time errors with other compilers. We *could*
202 * define our own ecb_clang_has_feature, but I just can't be bothered to work
203 * around this shit time and again.
204 * #elif defined __clang && __has_feature (cxx_atomic)
205 * // see comment below (stdatomic.h) about the C11 memory model. 207 /* see comment below (stdatomic.h) about the C11 memory model. */
206 * #define ECB_MEMORY_FENCE __c11_atomic_thread_fence (__ATOMIC_SEQ_CST) 208 #define ECB_MEMORY_FENCE __c11_atomic_thread_fence (__ATOMIC_SEQ_CST)
207 * #define ECB_MEMORY_FENCE_ACQUIRE __c11_atomic_thread_fence (__ATOMIC_ACQUIRE) 209 #define ECB_MEMORY_FENCE_ACQUIRE __c11_atomic_thread_fence (__ATOMIC_ACQUIRE)
208 * #define ECB_MEMORY_FENCE_RELEASE __c11_atomic_thread_fence (__ATOMIC_RELEASE) 210 #define ECB_MEMORY_FENCE_RELEASE __c11_atomic_thread_fence (__ATOMIC_RELEASE)
209 */
210 211
211 #elif ECB_GCC_VERSION(4,4) || defined __INTEL_COMPILER || defined __clang__ 212 #elif ECB_GCC_VERSION(4,4) || defined __INTEL_COMPILER || defined __clang__
212 #define ECB_MEMORY_FENCE __sync_synchronize () 213 #define ECB_MEMORY_FENCE __sync_synchronize ()
213 #elif _MSC_VER >= 1500 /* VC++ 2008 */ 214 #elif _MSC_VER >= 1500 /* VC++ 2008 */
214 /* apparently, microsoft broke all the memory barrier stuff in Visual Studio 2008... */ 215 /* apparently, microsoft broke all the memory barrier stuff in Visual Studio 2008... */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines