diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-09-24 10:05:17 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-09-24 10:11:32 +0900 |
commit | 63297c2ca494661bdf5536a3c5d3a1c8d68d2d64 (patch) | |
tree | 940cfc66482ffaf8e45d57c7f4441ad7d3501cdf | |
parent | b929af430c39df6597d2f3f53b82c38b1d76217b (diff) |
Align the implementation precedences with `rb_atomic_t` definition
On MinGW, where both of Win32 API and GCC built-ins are available,
the mismatch of implementations to the definition caused lots of
warnings.
-rw-r--r-- | include/ruby/atomic.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/ruby/atomic.h b/include/ruby/atomic.h index 07aa10ce5d..3eb80fbf7d 100644 --- a/include/ruby/atomic.h +++ b/include/ruby/atomic.h @@ -430,6 +430,9 @@ rbimpl_atomic_inc(volatile rb_atomic_t *ptr) { #if 0 +#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) + rbimpl_atomic_add(ptr, 1); + #elif defined(_WIN32) InterlockedIncrement(ptr); @@ -450,6 +453,9 @@ rbimpl_atomic_size_inc(volatile size_t *ptr) { #if 0 +#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) + rbimpl_atomic_size_add(ptr, 1); + #elif defined(_WIN32) && defined(_M_AMD64) InterlockedIncrement64(ptr); @@ -558,6 +564,9 @@ rbimpl_atomic_dec(volatile rb_atomic_t *ptr) { #if 0 +#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) + rbimpl_atomic_sub(ptr, 1); + #elif defined(_WIN32) InterlockedDecrement(ptr); @@ -578,6 +587,9 @@ rbimpl_atomic_size_dec(volatile size_t *ptr) { #if 0 +#elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_SYNC_BUILTINS) + rbimpl_atomic_size_sub(ptr, 1); + #elif defined(_WIN32) && defined(_M_AMD64) InterlockedDecrement64(ptr); |