[linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands
From: kernel test robot <hidden>
Date: 2021-11-04 13:24:57
Also in:
linux-mm, oe-kbuild-all
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 <redacted> All errors (new ones prefixed by >>):
quoted
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 warningquoted
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 warningquoted
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 Attachments
- .config.gz [application/gzip] 27291 bytes