Jonathan Gray <j...@jsg.id.au> writes: > commit a6a38a038bd62e6d9558905f00bef81b5e7e6fcc > Author: Grazvydas Ignotas <nota...@gmail.com> > Date: Fri Mar 31 01:26:25 2017 +0300 > > util/u_atomic: provide 64bit atomics where they're missing > > attempts to handle powerpc like situations, though not sync > builtins being missing entirely.
Not ready for Clang on i386 which has __sync* but not __atomic*. Teaching configure.ac about 64bit __atomic* isn't enough. #include <stdint.h> uint64_t v; int main() { #ifdef USE_GCC_ATOMIC_BUILTINS return __atomic_add_fetch(&v, 1, __ATOMIC_ACQ_REL); #else return __sync_add_and_fetch(&v, (uint64_t)1); #endif } leads to u_atomic.c:38:1: error: conflicting types for '__sync_add_and_fetch_8' __sync_add_and_fetch_8(uint64_t *ptr, uint64_t val) ^ u_atomic.c:38:1: note: '__sync_add_and_fetch_8' is a builtin with type 'long long (volatile long long *, long long, ...)' u_atomic.c:38:1: error: definition of builtin function '__sync_add_and_fetch_8' __sync_add_and_fetch_8(uint64_t *ptr, uint64_t val) ^ u_atomic.c:51:1: error: conflicting types for '__sync_sub_and_fetch_8' __sync_sub_and_fetch_8(uint64_t *ptr, uint64_t val) ^ u_atomic.c:51:1: note: '__sync_sub_and_fetch_8' is a builtin with type 'long long (volatile long long *, long long, ...)' u_atomic.c:51:1: error: definition of builtin function '__sync_sub_and_fetch_8' __sync_sub_and_fetch_8(uint64_t *ptr, uint64_t val) ^ u_atomic.c:64:1: error: no previous prototype for function '__atomic_fetch_add_8' [-Werror,-Wmissing-prototypes] __atomic_fetch_add_8(uint64_t *ptr, uint64_t val, int memorder) ^ u_atomic.c:70:1: error: no previous prototype for function '__atomic_fetch_sub_8' [-Werror,-Wmissing-prototypes] __atomic_fetch_sub_8(uint64_t *ptr, uint64_t val, int memorder) ^ 6 errors generated. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev