[norov:bitmap-for-next 43/43] lib/bitmap.c:1571:36: warning: operation on 'i' may be undefined

From: kernel test robot
Date: Sun Apr 10 2022 - 17:21:32 EST


tree: https://github.com/norov/linux bitmap-for-next
head: a136dfabd10d0c1354c41a069cc4e00147a721e1
commit: a136dfabd10d0c1354c41a069cc4e00147a721e1 [43/43] bitmap_from_arr64
config: um-i386_defconfig (https://download.01.org/0day-ci/archive/20220411/202204110512.jCY23V15-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.2.0-19) 11.2.0
reproduce (this is a W=1 build):
# https://github.com/norov/linux/commit/a136dfabd10d0c1354c41a069cc4e00147a721e1
git remote add norov https://github.com/norov/linux
git fetch --no-tags norov bitmap-for-next
git checkout a136dfabd10d0c1354c41a069cc4e00147a721e1
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=um SUBARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

lib/bitmap.c: In function 'bitmap_to_arr64':
>> lib/bitmap.c:1571:36: warning: operation on 'i' may be undefined [-Wsequence-point]
1571 | buf[i/2] = bitmap[i++];
| ~^~
>> lib/bitmap.c:1573:49: warning: left shift count >= width of type [-Wshift-count-overflow]
1573 | buf[i/2] |= bitmap[i++] << 32;
| ^~
lib/bitmap.c:1573:45: warning: operation on 'i' may be undefined [-Wsequence-point]
1573 | buf[i/2] |= bitmap[i++] << 32;
| ~^~
lib/bitmap.c:1573:45: warning: operation on 'i' may be undefined [-Wsequence-point]


vim +/i +1571 lib/bitmap.c

1559
1560 /**
1561 * bitmap_to_arr64 - copy the contents of bitmap to a u64 array of bits
1562 * @buf: array of u64 (in host byte order), the dest bitmap
1563 * @bitmap: array of unsigned longs, the source bitmap
1564 * @nbits: number of bits in @bitmap
1565 */
1566 void bitmap_to_arr64(u64 *buf, const unsigned long *bitmap, unsigned int nbits)
1567 {
1568 unsigned int i = 0, words = BITS_TO_LONGS(nbits);
1569
1570 while (i < words) {
> 1571 buf[i/2] = bitmap[i++];
1572 if (i < words)
> 1573 buf[i/2] |= bitmap[i++] << 32;
1574 }
1575
1576 /* Clear tail bits in last element of array beyond nbits. */
1577 if (nbits % 64)
1578 buf[i - 1] &= GENMASK_ULL(nbits, 0);
1579 }
1580 EXPORT_SYMBOL(bitmap_to_arr64);
1581

--
0-DAY CI Kernel Test Service
https://01.org/lkp