diff options
author | Andrew Galante <[email protected]> | 2018-06-11 15:05:25 -0700 |
---|---|---|
committer | Dylan Baker <[email protected]> | 2018-06-13 11:07:06 -0700 |
commit | 87fb8bf6a8afc0699c4092d2c9fb02d9fb651c9a (patch) | |
tree | 3462c729361ee54bb52f4457fa3bd9423593c642 | |
parent | b9725e3aa43d9e4776ea677545837c7831d3c074 (diff) |
configure.ac: Test for __atomic_add_fetch in atomic checks
Some platforms have 64-bit __atomic_load_n but not 64-bit
__atomic_add_fetch, so test for both of them.
Bug: https://bugs.gentoo.org/655616
Reviewed-by: Matt Turner <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
Reviewed-by: Dylan Baker <[email protected]>
(cherry picked from commit baf16b2ea3a72d01712d4e16fae97606ac68dff0)
-rw-r--r-- | configure.ac | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index e778575470f..7589896cb69 100644 --- a/configure.ac +++ b/configure.ac @@ -442,7 +442,8 @@ int main() { 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 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != xyes; then 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 |