git: 58a2ebf3294f - stable/12 - Disable clang 12 -Wcompound-token-split-by-macro warning for atomic-v4.h
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 23 Dec 2021 23:34:48 UTC
The branch stable/12 has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=58a2ebf3294f0b6ac3f92e66d477595073b2bf54
commit 58a2ebf3294f0b6ac3f92e66d477595073b2bf54
Author: Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2021-12-23 23:25:42 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2021-12-23 23:34:22 +0000
Disable clang 12 -Wcompound-token-split-by-macro warning for atomic-v4.h
Otherwise, the macros will in sys/arm/include/atomic-v4.h will result in
warnings (causing -Werror errors), similar to:
arm.arm/tmp/usr/include/machine/atomic-v4.h:125:2: error: '(' and '{'
tokens introducing statement expression appear in different macro
expansion contexts [-Werror,-Wcompound-token-split-by-macro]
__with_interrupts_disabled(
^~~~~~~~~~~~~~~~~~~~~~~~~~~
The macros could be restructured to avoid this splitting of statement
expressions, but it is less disruptive to silence the warning for clang
>= 12.
Direct commit to stable/12, since atomic-v4.h is gone (together with
arm.arm) in stable/13 and later.
---
sys/arm/include/atomic-v4.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/sys/arm/include/atomic-v4.h b/sys/arm/include/atomic-v4.h
index a0083e00deaa..1d1df74af5f9 100644
--- a/sys/arm/include/atomic-v4.h
+++ b/sys/arm/include/atomic-v4.h
@@ -55,6 +55,11 @@
#define wmb() dmb()
#define rmb() dmb()
+#if defined(__clang_major__) && __clang_major__ >= 12
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wcompound-token-split-by-macro"
+#endif
+
#define __with_interrupts_disabled(expr) \
do { \
u_int cpsr_save, tmp; \
@@ -566,6 +571,10 @@ atomic_swap_32(volatile u_int32_t *p, u_int32_t v)
#define atomic_load_acq_long atomic_load_long
#undef __with_interrupts_disabled
+#if defined(__clang_major__) && __clang_major__ >= 12
+#pragma clang diagnostic pop
+#endif
+
static __inline void
atomic_add_long(volatile u_long *p, u_long v)
{