/* Compiler barrier */
#define barrier() ({ asm volatile("" ::: "memory"); (void)0; })
+#if defined(__ATOMIC_RELAXED) && !defined(__cplusplus)
+/* For C11 atomic ops */
+
/* The variable that receives the old value of an atomically-accessed
* variable must be non-qualified, because atomic builtins return values
* through a pointer-type argument as in __atomic_load(&var, &old, MODEL).
(unsigned short)1, \
(expr)+0))))))
-#ifdef __ATOMIC_RELAXED
-/* For C11 atomic ops */
-
/* Manual memory barriers
*
*__atomic_thread_fence does not include a compiler barrier; instead,