From e2c2753ee88fc4ca56bebe1652233a6fa8a0286c Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 2 Feb 2021 05:27:08 +0000 Subject: [PATCH] libast: Fix detection of GCC 4.1+ 64/32-bit atomic operations model This fix to the atomic scalar operations feature tests is from OpenSUSE: https://build.opensuse.org/package/view_file/shells/ksh/ksh93-aso.dif --- src/lib/libast/features/aso | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/libast/features/aso b/src/lib/libast/features/aso index cf97abffb..1152af54b 100644 --- a/src/lib/libast/features/aso +++ b/src/lib/libast/features/aso @@ -5,7 +5,10 @@ if aso note{ gcc 4.1+ 64 bit memory atomic operations model }end link{ int main() { uint64_t i = 0; - return __sync_fetch_and_add(&i,7); + uint32_t j = 0; + uint16_t l = 0; + uint8_t m = 0; + return __sync_fetch_and_add(&i,7)+__sync_fetch_and_add(&j,7)+__sync_fetch_and_add(&l,7)+__sync_fetch_and_add(&m,7); } }end && { #define _aso_cas8(p,o,n) __sync_val_compare_and_swap(p,o,n) @@ -31,7 +34,9 @@ elif aso note{ gcc 4.1+ 32 bit memory atomic operations model }end link{ int main() { uint32_t i = 0; - return __sync_fetch_and_add(&i,7); + uint16_t j = 0; + uint8_t l = 0; + return __sync_fetch_and_add(&i,7)+__sync_fetch_and_add(&j,7)+__sync_fetch_and_add(&l,7); } }end && { #define _aso_cas8(p,o,n) __sync_val_compare_and_swap(p,o,n)