summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/port/atomics/generic-gcc.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/include/port/atomics/generic-gcc.h b/src/include/port/atomics/generic-gcc.h
index e7dfad4f0d5..a0751f2286a 100644
--- a/src/include/port/atomics/generic-gcc.h
+++ b/src/include/port/atomics/generic-gcc.h
@@ -44,12 +44,20 @@
#if !defined(pg_read_barrier_impl) && defined(HAVE_GCC__ATOMIC_INT32_CAS)
/* acquire semantics include read barrier semantics */
-# define pg_read_barrier_impl() __atomic_thread_fence(__ATOMIC_ACQUIRE)
+# define pg_read_barrier_impl() do \
+{ \
+ pg_compiler_barrier_impl(); \
+ __atomic_thread_fence(__ATOMIC_ACQUIRE); \
+} while (0)
#endif
#if !defined(pg_write_barrier_impl) && defined(HAVE_GCC__ATOMIC_INT32_CAS)
/* release semantics include write barrier semantics */
-# define pg_write_barrier_impl() __atomic_thread_fence(__ATOMIC_RELEASE)
+# define pg_write_barrier_impl() do \
+{ \
+ pg_compiler_barrier_impl(); \
+ __atomic_thread_fence(__ATOMIC_RELEASE); \
+} while (0)
#endif