File 0847-Improve-memory-barrier-usage-on-64-bit-ARM-when-comp.patch of Package erlang

From bdc09edba0821e1fa5dad3a929c54ae0bcd8da4f Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Fri, 19 Feb 2021 15:03:39 +0100
Subject: [PATCH 3/3] Improve memory barrier usage on 64-bit ARM when compiling
 with gcc

---
 erts/include/internal/gcc/ethread.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/erts/include/internal/gcc/ethread.h b/erts/include/internal/gcc/ethread.h
index 0fb24445d0..754b566018 100644
--- a/erts/include/internal/gcc/ethread.h
+++ b/erts/include/internal/gcc/ethread.h
@@ -68,6 +68,14 @@
 #elif !ETHR_AT_LEAST_GCC_VSN__(4, 8, 0)
 /* True gcc of version < 4.8, i.e., bug exist... */
 #  define ETHR___atomic_load_ACQUIRE_barrier_bug ETHR_GCC_VERSIONS_MASK__
+#elif ETHR_AT_LEAST_GCC_VSN__(8, 3, 0) \
+    && (defined(__arm64__) || defined(__aarch64__) || defined(__arm__)) \
+    && ETHR_SIZEOF_PTR == 8
+/* Verified not to have this bug */
+#    define ETHR___atomic_load_ACQUIRE_barrier_bug 0
+/* Also trust builtin barriers */
+#    undef ETHR_TRUST_GCC_ATOMIC_BUILTINS_MEMORY_BARRIERS__
+#    define ETHR_TRUST_GCC_ATOMIC_BUILTINS_MEMORY_BARRIERS__ 1
 #elif ETHR_AT_LEAST_GCC_VSN__(9, 3, 0) \
     && (defined(__powerpc__) || defined(__ppc__) || defined(__powerpc64__)) \
     && ETHR_SIZEOF_PTR == 8
-- 
2.26.2

openSUSE Build Service is sponsored by