… | |
… | |
152 | #define ECB_MEMORY_FENCE __atomic_thread_fence (__ATOMIC_SEQ_CST) |
152 | #define ECB_MEMORY_FENCE __atomic_thread_fence (__ATOMIC_SEQ_CST) |
153 | |
153 | |
154 | /* The __has_feature syntax from clang is so misdesigned that we cannot use it |
154 | /* The __has_feature syntax from clang is so misdesigned that we cannot use it |
155 | * without risking compile time errors with other compilers. We *could* |
155 | * without risking compile time errors with other compilers. We *could* |
156 | * define our own ecb_clang_has_feature, but I just can't be bothered to work |
156 | * define our own ecb_clang_has_feature, but I just can't be bothered to work |
157 | * around * this shit time and again. |
157 | * around this shit time and again. |
158 | * #elif defined __clang && __has_feature (cxx_atomic) |
158 | * #elif defined __clang && __has_feature (cxx_atomic) |
159 | * // see comment below (stdatomic.h) about the C11 memory model. |
159 | * // see comment below (stdatomic.h) about the C11 memory model. |
160 | * #define ECB_MEMORY_FENCE __c11_atomic_thread_fence (__ATOMIC_SEQ_CST) |
160 | * #define ECB_MEMORY_FENCE __c11_atomic_thread_fence (__ATOMIC_SEQ_CST) |
161 | */ |
161 | */ |
162 | |
162 | |