]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: atomics: fix build issue on non-x86/non-arm systems
authorWilly Tarreau <w@1wt.eu>
Mon, 7 Apr 2025 07:36:16 +0000 (09:36 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 7 Apr 2025 07:38:22 +0000 (09:38 +0200)
Commit f435a2e518 ("CLEANUP: atomics: also replace __sync_synchronize()
with __atomic_thread_fence()") replaced the builtins used for barriers,
but the different API required an argument while the macros didn't specify
any, resulting in double parenthesis that were causing obscure build errors
such as "called object type 'void' is not a function or function pointer".
Let's just specify the args for the macro. No backport is needed.

include/haproxy/atomic.h

index 36e02460371e8f9f1a991a5f6a7844fbc9deafd4..5116c2d150634a425fdd68bc92b3dc578f5bde91 100644 (file)
@@ -685,12 +685,12 @@ static __inline int __ha_cas_dw(void *target, void *compare, void *set)
 
 #else /* unknown / unhandled architecture, fall back to generic barriers */
 
-#define __ha_barrier_atomic_load  __atomic_thread_fence(__ATOMIC_ACQUIRE)
-#define __ha_barrier_atomic_store __atomic_thread_fence(__ATOMIC_RELEASE)
-#define __ha_barrier_atomic_full  __atomic_thread_fence(__ATOMIC_SEQ_CST)
-#define __ha_barrier_load         __atomic_thread_fence(__ATOMIC_ACQUIRE)
-#define __ha_barrier_store        __atomic_thread_fence(__ATOMIC_RELEASE)
-#define __ha_barrier_full         __atomic_thread_fence(__ATOMIC_SEQ_CST)
+#define __ha_barrier_atomic_load()  __atomic_thread_fence(__ATOMIC_ACQUIRE)
+#define __ha_barrier_atomic_store() __atomic_thread_fence(__ATOMIC_RELEASE)
+#define __ha_barrier_atomic_full()  __atomic_thread_fence(__ATOMIC_SEQ_CST)
+#define __ha_barrier_load()         __atomic_thread_fence(__ATOMIC_ACQUIRE)
+#define __ha_barrier_store()        __atomic_thread_fence(__ATOMIC_RELEASE)
+#define __ha_barrier_full()         __atomic_thread_fence(__ATOMIC_SEQ_CST)
 
 /* Note: there is no generic DWCAS */