summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-24 10:05:17 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-24 10:11:32 +0900
commit63297c2ca494661bdf5536a3c5d3a1c8d68d2d64 (patch)
tree940cfc66482ffaf8e45d57c7f4441ad7d3501cdf /include
parentb929af430c39df6597d2f3f53b82c38b1d76217b (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.
Diffstat (limited to 'include')
-rw-r--r--include/ruby/atomic.h12
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);