From: Richard Levitte Date: Wed, 24 Aug 2016 11:03:20 +0000 (+0200) Subject: Check for __GNUC__ to use GNU C atomic buildins X-Git-Tag: OpenSSL_1_1_0~15 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=cb4b54c23b95e4638d643eb349d8d8dfa1cc2fd3 Check for __GNUC__ to use GNU C atomic buildins Note: we trust any other compiler that fully implements GNU extension to define __GNUC__ RT#4642 Reviewed-by: Andy Polyakov --- diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c index 6f5e812d97..72ea83892b 100644 --- a/crypto/threads_pthread.c +++ b/crypto/threads_pthread.c @@ -109,9 +109,9 @@ int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b) int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { -#ifdef __ATOMIC_RELAXED +# if defined(__GNUC__) && defined(__ATOMIC_RELAXED) *ret = __atomic_add_fetch(val, amount, __ATOMIC_RELAXED); -#else +# else if (!CRYPTO_THREAD_write_lock(lock)) return 0; @@ -120,7 +120,7 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) if (!CRYPTO_THREAD_unlock(lock)) return 0; -#endif +# endif return 1; }