--- mesa-18.1.1/configure.ac 2018-06-09 15:17:31.990681229 -0400 +++ mesa-18.1.1/configure.ac 2018-06-09 15:38:55.447538539 -0400 @@ -442,7 +442,8 @@ struct { uint64_t *v; } x; - return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); + return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) & + (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL); }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes, GCC_ATOMIC_BUILTINS_SUPPORTED=no) dnl If that didn't work, we try linking with -latomic, which is needed on some @@ -456,7 +457,8 @@ struct { uint64_t *v; } x; - return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); + return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) & + (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL); }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes LIBATOMIC_LIBS="-latomic", GCC_ATOMIC_BUILTINS_SUPPORTED=no) LDFLAGS=$save_LDFLAGS --- mesa-18.1.1/meson.build 2018-06-09 15:17:31.887338742 -0400 +++ mesa-18.1.1/meson.build 2018-06-09 15:40:50.054295757 -0400 @@ -836,7 +836,7 @@ # Check for GCC style atomics dep_atomic = null_dep -if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE); }', +if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE) & __atomic_add_fetch(&n, 1, __ATOMIC_ACQ_REL); }', name : 'GCC atomic builtins') pre_args += '-DUSE_GCC_ATOMIC_BUILTINS' @@ -851,7 +851,8 @@ struct { uint64_t *v; } x; - return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); + return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) & + __atomic_add_fetch(&n, 1, __ATOMIC_ACQ_REL); }''', name : 'GCC atomic builtins required -latomic') dep_atomic = cc.find_library('atomic')