From: kernel test robot <lkp@intel.com>
To: Nick Terrell <terrelln@fb.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
Linux Memory Management List <linux-mm@kvack.org>
Subject: [linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands
Date: Thu, 4 Nov 2021 21:24:32 +0800 [thread overview]
Message-ID: <202111042124.mRUZspCS-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 9480 bytes --]
INFO skip CC on NO_CC_LKML=Too large changeset: 39854 lines
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 8a796a1dfca2780321755033a74bca2bbe651680
commit: ecea7adad80d9d230df766345e5f8061792da00d [6210/13128] lib: zstd: Upgrade to latest upstream zstd version 1.4.10
config: riscv-buildonly-randconfig-r002-20211104 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 847a6807332b13f43704327c2d30103ec0347c77)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ecea7adad80d9d230df766345e5f8061792da00d
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout ecea7adad80d9d230df766345e5f8061792da00d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
(BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
#define LIKELY(x) (__builtin_expect((x), 1))
~^~
lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
(BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
#define LIKELY(x) (__builtin_expect((x), 1))
^
lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
(BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
#define LIKELY(x) (__builtin_expect((x), 1))
^
lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
3 errors generated.
vim +890 lib/zstd/decompress/huf_decompress.c
802
803 FORCE_INLINE_TEMPLATE size_t
804 HUF_decompress4X2_usingDTable_internal_body(
805 void* dst, size_t dstSize,
806 const void* cSrc, size_t cSrcSize,
807 const HUF_DTable* DTable)
808 {
809 if (cSrcSize < 10) return ERROR(corruption_detected); /* strict minimum : jump table + 1 byte per stream */
810
811 { const BYTE* const istart = (const BYTE*) cSrc;
812 BYTE* const ostart = (BYTE*) dst;
813 BYTE* const oend = ostart + dstSize;
814 BYTE* const olimit = oend - (sizeof(size_t)-1);
815 const void* const dtPtr = DTable+1;
816 const HUF_DEltX2* const dt = (const HUF_DEltX2*)dtPtr;
817
818 /* Init */
819 BIT_DStream_t bitD1;
820 BIT_DStream_t bitD2;
821 BIT_DStream_t bitD3;
822 BIT_DStream_t bitD4;
823 size_t const length1 = MEM_readLE16(istart);
824 size_t const length2 = MEM_readLE16(istart+2);
825 size_t const length3 = MEM_readLE16(istart+4);
826 size_t const length4 = cSrcSize - (length1 + length2 + length3 + 6);
827 const BYTE* const istart1 = istart + 6; /* jumpTable */
828 const BYTE* const istart2 = istart1 + length1;
829 const BYTE* const istart3 = istart2 + length2;
830 const BYTE* const istart4 = istart3 + length3;
831 size_t const segmentSize = (dstSize+3) / 4;
832 BYTE* const opStart2 = ostart + segmentSize;
833 BYTE* const opStart3 = opStart2 + segmentSize;
834 BYTE* const opStart4 = opStart3 + segmentSize;
835 BYTE* op1 = ostart;
836 BYTE* op2 = opStart2;
837 BYTE* op3 = opStart3;
838 BYTE* op4 = opStart4;
839 U32 endSignal = 1;
840 DTableDesc const dtd = HUF_getDTableDesc(DTable);
841 U32 const dtLog = dtd.tableLog;
842
843 if (length4 > cSrcSize) return ERROR(corruption_detected); /* overflow */
844 CHECK_F( BIT_initDStream(&bitD1, istart1, length1) );
845 CHECK_F( BIT_initDStream(&bitD2, istart2, length2) );
846 CHECK_F( BIT_initDStream(&bitD3, istart3, length3) );
847 CHECK_F( BIT_initDStream(&bitD4, istart4, length4) );
848
849 /* 16-32 symbols per loop (4-8 symbols per stream) */
850 for ( ; (endSignal) & (op4 < olimit); ) {
851 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
852 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
853 HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
854 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
855 HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
856 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
857 HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
858 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
859 HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
860 endSignal &= BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished;
861 endSignal &= BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished;
862 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
863 HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
864 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
865 HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
866 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
867 HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
868 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
869 HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
870 endSignal &= BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished;
871 endSignal &= BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished;
872 #else
873 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
874 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
875 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
876 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
877 HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
878 HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
879 HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
880 HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
881 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
882 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
883 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
884 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
885 HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
886 HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
887 HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
888 HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
889 endSignal = (U32)LIKELY(
> 890 (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
891 & (BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished)
892 & (BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished)
893 & (BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished));
894 #endif
895 }
896
897 /* check corruption */
898 if (op1 > opStart2) return ERROR(corruption_detected);
899 if (op2 > opStart3) return ERROR(corruption_detected);
900 if (op3 > opStart4) return ERROR(corruption_detected);
901 /* note : op4 already verified within main loop */
902
903 /* finish bitStreams one by one */
904 HUF_decodeStreamX2(op1, &bitD1, opStart2, dt, dtLog);
905 HUF_decodeStreamX2(op2, &bitD2, opStart3, dt, dtLog);
906 HUF_decodeStreamX2(op3, &bitD3, opStart4, dt, dtLog);
907 HUF_decodeStreamX2(op4, &bitD4, oend, dt, dtLog);
908
909 /* check */
910 { U32 const endCheck = BIT_endOfDStream(&bitD1) & BIT_endOfDStream(&bitD2) & BIT_endOfDStream(&bitD3) & BIT_endOfDStream(&bitD4);
911 if (!endCheck) return ERROR(corruption_detected); }
912
913 /* decoded size */
914 return dstSize;
915 }
916 }
917
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27291 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands
Date: Thu, 04 Nov 2021 21:24:32 +0800 [thread overview]
Message-ID: <202111042124.mRUZspCS-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 9652 bytes --]
INFO skip CC on NO_CC_LKML=Too large changeset: 39854 lines
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 8a796a1dfca2780321755033a74bca2bbe651680
commit: ecea7adad80d9d230df766345e5f8061792da00d [6210/13128] lib: zstd: Upgrade to latest upstream zstd version 1.4.10
config: riscv-buildonly-randconfig-r002-20211104 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 847a6807332b13f43704327c2d30103ec0347c77)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ecea7adad80d9d230df766345e5f8061792da00d
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout ecea7adad80d9d230df766345e5f8061792da00d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
(BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
#define LIKELY(x) (__builtin_expect((x), 1))
~^~
lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
(BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
#define LIKELY(x) (__builtin_expect((x), 1))
^
lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
(BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
#define LIKELY(x) (__builtin_expect((x), 1))
^
lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
3 errors generated.
vim +890 lib/zstd/decompress/huf_decompress.c
802
803 FORCE_INLINE_TEMPLATE size_t
804 HUF_decompress4X2_usingDTable_internal_body(
805 void* dst, size_t dstSize,
806 const void* cSrc, size_t cSrcSize,
807 const HUF_DTable* DTable)
808 {
809 if (cSrcSize < 10) return ERROR(corruption_detected); /* strict minimum : jump table + 1 byte per stream */
810
811 { const BYTE* const istart = (const BYTE*) cSrc;
812 BYTE* const ostart = (BYTE*) dst;
813 BYTE* const oend = ostart + dstSize;
814 BYTE* const olimit = oend - (sizeof(size_t)-1);
815 const void* const dtPtr = DTable+1;
816 const HUF_DEltX2* const dt = (const HUF_DEltX2*)dtPtr;
817
818 /* Init */
819 BIT_DStream_t bitD1;
820 BIT_DStream_t bitD2;
821 BIT_DStream_t bitD3;
822 BIT_DStream_t bitD4;
823 size_t const length1 = MEM_readLE16(istart);
824 size_t const length2 = MEM_readLE16(istart+2);
825 size_t const length3 = MEM_readLE16(istart+4);
826 size_t const length4 = cSrcSize - (length1 + length2 + length3 + 6);
827 const BYTE* const istart1 = istart + 6; /* jumpTable */
828 const BYTE* const istart2 = istart1 + length1;
829 const BYTE* const istart3 = istart2 + length2;
830 const BYTE* const istart4 = istart3 + length3;
831 size_t const segmentSize = (dstSize+3) / 4;
832 BYTE* const opStart2 = ostart + segmentSize;
833 BYTE* const opStart3 = opStart2 + segmentSize;
834 BYTE* const opStart4 = opStart3 + segmentSize;
835 BYTE* op1 = ostart;
836 BYTE* op2 = opStart2;
837 BYTE* op3 = opStart3;
838 BYTE* op4 = opStart4;
839 U32 endSignal = 1;
840 DTableDesc const dtd = HUF_getDTableDesc(DTable);
841 U32 const dtLog = dtd.tableLog;
842
843 if (length4 > cSrcSize) return ERROR(corruption_detected); /* overflow */
844 CHECK_F( BIT_initDStream(&bitD1, istart1, length1) );
845 CHECK_F( BIT_initDStream(&bitD2, istart2, length2) );
846 CHECK_F( BIT_initDStream(&bitD3, istart3, length3) );
847 CHECK_F( BIT_initDStream(&bitD4, istart4, length4) );
848
849 /* 16-32 symbols per loop (4-8 symbols per stream) */
850 for ( ; (endSignal) & (op4 < olimit); ) {
851 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
852 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
853 HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
854 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
855 HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
856 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
857 HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
858 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
859 HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
860 endSignal &= BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished;
861 endSignal &= BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished;
862 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
863 HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
864 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
865 HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
866 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
867 HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
868 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
869 HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
870 endSignal &= BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished;
871 endSignal &= BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished;
872 #else
873 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
874 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
875 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
876 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
877 HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
878 HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
879 HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
880 HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
881 HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
882 HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
883 HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
884 HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
885 HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
886 HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
887 HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
888 HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
889 endSignal = (U32)LIKELY(
> 890 (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
891 & (BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished)
892 & (BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished)
893 & (BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished));
894 #endif
895 }
896
897 /* check corruption */
898 if (op1 > opStart2) return ERROR(corruption_detected);
899 if (op2 > opStart3) return ERROR(corruption_detected);
900 if (op3 > opStart4) return ERROR(corruption_detected);
901 /* note : op4 already verified within main loop */
902
903 /* finish bitStreams one by one */
904 HUF_decodeStreamX2(op1, &bitD1, opStart2, dt, dtLog);
905 HUF_decodeStreamX2(op2, &bitD2, opStart3, dt, dtLog);
906 HUF_decodeStreamX2(op3, &bitD3, opStart4, dt, dtLog);
907 HUF_decodeStreamX2(op4, &bitD4, oend, dt, dtLog);
908
909 /* check */
910 { U32 const endCheck = BIT_endOfDStream(&bitD1) & BIT_endOfDStream(&bitD2) & BIT_endOfDStream(&bitD3) & BIT_endOfDStream(&bitD4);
911 if (!endCheck) return ERROR(corruption_detected); }
912
913 /* decoded size */
914 return dstSize;
915 }
916 }
917
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 27291 bytes --]
next reply other threads:[~2021-11-04 13:24 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-04 13:24 kernel test robot [this message]
2021-11-04 13:24 ` [linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202111042124.mRUZspCS-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-mm@kvack.org \
--cc=llvm@lists.linux.dev \
--cc=terrelln@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.