git: 284434f7a6fc - stable/13 - Disable clang 14 warning about bitwise operators in zstd

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Fri, 11 Feb 2022 16:51:38 UTC
The branch stable/13 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=284434f7a6fcae8f2a151862aeb9be3bb668ca87

commit 284434f7a6fcae8f2a151862aeb9be3bb668ca87
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2022-02-08 20:46:03 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2022-02-11 16:42:30 +0000

    Disable clang 14 warning about bitwise operators in zstd
    
    Parts of zstd, used in openzfs and other places, trigger a new clang 14
    -Werror warning:
    
    ```
    sys/contrib/zstd/lib/decompress/huf_decompress.c:889:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                            (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ```
    
    While the warning is benign, it should ideally be fixed upstream and
    then vendor-imported, but for now silence it selectively.
    
    MFC after:      3 days
    
    (cherry picked from commit 5f2aca83940097d7d23b4137073fb601f8e74232)
---
 cddl/lib/libzpool/Makefile | 1 +
 lib/libzstd/Makefile       | 2 ++
 share/mk/bsd.sys.mk        | 3 +++
 sys/conf/files             | 2 +-
 sys/conf/kern.mk           | 3 +++
 sys/modules/zfs/Makefile   | 1 +
 6 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/cddl/lib/libzpool/Makefile b/cddl/lib/libzpool/Makefile
index 6893e31ff20a..0e5d24bd0ec5 100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@ -263,5 +263,6 @@ CFLAGS+=	-g -DDEBUG=1
 
 CFLAGS.zfs_zstd.c=	-Wno-cast-qual -Wno-pointer-arith
 CFLAGS.zstd.c+=	-fno-tree-vectorize
+CFLAGS.zstd.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 
 .include <bsd.lib.mk>
diff --git a/lib/libzstd/Makefile b/lib/libzstd/Makefile
index 5f7cd8248d88..e4f034f288a2 100644
--- a/lib/libzstd/Makefile
+++ b/lib/libzstd/Makefile
@@ -49,6 +49,8 @@ ZSTDDIR=	${SRCTOP}/sys/contrib/zstd
 
 .include <bsd.compiler.mk>
 
+CFLAGS.huf_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
+
 # https://github.com/facebook/zstd/commit/812e8f2a [zstd 1.4.1]
 # "Note that [GCC] autovectorization still does not do a good job on the
 # optimized version, so it's turned off via attribute and flag.  I found
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
index 745382a32bc9..3bbe7aa849b4 100644
--- a/share/mk/bsd.sys.mk
+++ b/share/mk/bsd.sys.mk
@@ -111,6 +111,9 @@ CWARNFLAGS.clang+=	-Wno-array-bounds
       ${COMPILER_TYPE} == "gcc")
 CWARNFLAGS+=		-Wno-misleading-indentation
 .endif # NO_WMISLEADING_INDENTATION
+.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 140000
+NO_WBITWISE_INSTEAD_OF_LOGICAL=	-Wno-bitwise-instead-of-logical
+.endif
 .endif # WARNS
 
 .if defined(FORMAT_AUDIT)
diff --git a/sys/conf/files b/sys/conf/files
index 9b0342287b22..ce212c83a5e1 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -726,7 +726,7 @@ contrib/zstd/lib/decompress/zstd_decompress.c	optional zstdio compile-with ${ZST
 # See comment in sys/conf/kern.pre.mk
 contrib/zstd/lib/decompress/zstd_decompress_block.c	optional zstdio \
 	compile-with "${ZSTD_C} ${ZSTD_DECOMPRESS_BLOCK_FLAGS}"
-contrib/zstd/lib/decompress/huf_decompress.c	optional zstdio compile-with ${ZSTD_C}
+contrib/zstd/lib/decompress/huf_decompress.c	optional zstdio compile-with "${ZSTD_C} ${NO_WBITWISE_INSTEAD_OF_LOGICAL}"
 # Blake 2
 contrib/libb2/blake2b-ref.c	optional crypto | ipsec | ipsec_support | !random_loadable random_fenestrasx \
 	compile-with "${NORMAL_C} -I$S/crypto/blake2 -Wno-cast-qual -DSUFFIX=_ref -Wno-unused-function"
diff --git a/sys/conf/kern.mk b/sys/conf/kern.mk
index f6767ba76a46..476997bfa01f 100644
--- a/sys/conf/kern.mk
+++ b/sys/conf/kern.mk
@@ -28,6 +28,9 @@ NO_WTAUTOLOGICAL_POINTER_COMPARE= -Wno-tautological-pointer-compare
 .if ${COMPILER_VERSION} >= 100000
 NO_WMISLEADING_INDENTATION=	-Wno-misleading-indentation
 .endif
+.if ${COMPILER_VERSION} >= 140000
+NO_WBITWISE_INSTEAD_OF_LOGICAL=	-Wno-bitwise-instead-of-logical
+.endif
 # Several other warnings which might be useful in some cases, but not severe
 # enough to error out the whole kernel build.  Display them anyway, so there is
 # some incentive to fix them eventually.
diff --git a/sys/modules/zfs/Makefile b/sys/modules/zfs/Makefile
index d185fdf259a5..81f3202975b8 100644
--- a/sys/modules/zfs/Makefile
+++ b/sys/modules/zfs/Makefile
@@ -339,3 +339,4 @@ CFLAGS.zstd.c= -U__BMI__ -fno-tree-vectorize
 .if ${MACHINE_CPUARCH} == "aarch64"
 CFLAGS.zstd.c+= -include ${SRCDIR}/zstd/include/aarch64_compat.h
 .endif
+CFLAGS.zstd.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL}