From 3df0c2fa32a37fbb95f32de20e737fdf65ec0f5b Mon Sep 17 00:00:00 2001 From: Ryan Moeller Date: Mon, 17 Aug 2020 18:40:17 -0400 Subject: [PATCH] FreeBSD: fix the build with Clang 11 * Cast void * to uintptr_t before casting to boolean_t. * Avoid clashing definition of __asm when not on Linux to prevent duplicate __volatile__. This was already done in some places but not all. Reviewed-by: Brian Behlendorf Reviewed-by: Matt Macy Signed-off-by: Ryan Moeller Closes #10723 --- module/zfs/dsl_dataset.c | 4 ++-- module/zfs/vdev_raidz_math_aarch64_neon_common.h | 2 ++ module/zfs/vdev_raidz_math_avx2.c | 2 ++ module/zfs/vdev_raidz_math_avx512f.c | 2 ++ module/zfs/vdev_raidz_math_powerpc_altivec_common.h | 2 ++ module/zfs/vdev_raidz_math_sse2.c | 2 ++ 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c index aac8bf76e4..c5143ac5a9 100644 --- a/module/zfs/dsl_dataset.c +++ b/module/zfs/dsl_dataset.c @@ -1020,7 +1020,7 @@ zfeature_active(spa_feature_t f, void *arg) { switch (spa_feature_table[f].fi_type) { case ZFEATURE_TYPE_BOOLEAN: { - boolean_t val = (boolean_t)arg; + boolean_t val = (boolean_t)(uintptr_t)arg; ASSERT(val == B_FALSE || val == B_TRUE); return (val); } @@ -1076,7 +1076,7 @@ dsl_dataset_activate_feature(uint64_t dsobj, spa_feature_t f, void *arg, switch (spa_feature_table[f].fi_type) { case ZFEATURE_TYPE_BOOLEAN: - ASSERT3S((boolean_t)arg, ==, B_TRUE); + ASSERT3S((boolean_t)(uintptr_t)arg, ==, B_TRUE); VERIFY0(zap_add(mos, dsobj, spa_feature_table[f].fi_guid, sizeof (zero), 1, &zero, tx)); break; diff --git a/module/zfs/vdev_raidz_math_aarch64_neon_common.h b/module/zfs/vdev_raidz_math_aarch64_neon_common.h index 92a50b3a00..e46b253654 100644 --- a/module/zfs/vdev_raidz_math_aarch64_neon_common.h +++ b/module/zfs/vdev_raidz_math_aarch64_neon_common.h @@ -25,7 +25,9 @@ #include #include +#ifdef __linux__ #define __asm __asm__ __volatile__ +#endif #define _REG_CNT(_0, _1, _2, _3, _4, _5, _6, _7, N, ...) N #define REG_CNT(r...) _REG_CNT(r, 8, 7, 6, 5, 4, 3, 2, 1) diff --git a/module/zfs/vdev_raidz_math_avx2.c b/module/zfs/vdev_raidz_math_avx2.c index 008e848d4c..65e4bebce8 100644 --- a/module/zfs/vdev_raidz_math_avx2.c +++ b/module/zfs/vdev_raidz_math_avx2.c @@ -28,7 +28,9 @@ #include #include +#ifdef __linux__ #define __asm __asm__ __volatile__ +#endif #define _REG_CNT(_0, _1, _2, _3, _4, _5, _6, _7, N, ...) N #define REG_CNT(r...) _REG_CNT(r, 8, 7, 6, 5, 4, 3, 2, 1) diff --git a/module/zfs/vdev_raidz_math_avx512f.c b/module/zfs/vdev_raidz_math_avx512f.c index b89e18c0c9..aab653b774 100644 --- a/module/zfs/vdev_raidz_math_avx512f.c +++ b/module/zfs/vdev_raidz_math_avx512f.c @@ -31,7 +31,9 @@ #include #include +#ifdef __linux__ #define __asm __asm__ __volatile__ +#endif #define _REG_CNT(_0, _1, _2, _3, _4, _5, _6, _7, N, ...) N #define REG_CNT(r...) _REG_CNT(r, 8, 7, 6, 5, 4, 3, 2, 1) diff --git a/module/zfs/vdev_raidz_math_powerpc_altivec_common.h b/module/zfs/vdev_raidz_math_powerpc_altivec_common.h index 1e57489529..3842f5fd63 100644 --- a/module/zfs/vdev_raidz_math_powerpc_altivec_common.h +++ b/module/zfs/vdev_raidz_math_powerpc_altivec_common.h @@ -26,7 +26,9 @@ #include #include +#ifdef __linux__ #define __asm __asm__ __volatile__ +#endif #define _REG_CNT(_0, _1, _2, _3, _4, _5, _6, _7, N, ...) N #define REG_CNT(r...) _REG_CNT(r, 8, 7, 6, 5, 4, 3, 2, 1) diff --git a/module/zfs/vdev_raidz_math_sse2.c b/module/zfs/vdev_raidz_math_sse2.c index 12d7bda01a..56a0b123d9 100644 --- a/module/zfs/vdev_raidz_math_sse2.c +++ b/module/zfs/vdev_raidz_math_sse2.c @@ -30,7 +30,9 @@ #include #include +#ifdef __linux__ #define __asm __asm__ __volatile__ +#endif #define _REG_CNT(_0, _1, _2, _3, _4, _5, _6, _7, N, ...) N #define REG_CNT(r...) _REG_CNT(r, 8, 7, 6, 5, 4, 3, 2, 1)