Re: include/linux/bits.h:25:21: error: first argument to '__builtin_choose_expr' not a constant

From: Andrew Morton
Date: Tue Aug 11 2020 - 00:32:48 EST


On Sat, 8 Aug 2020 08:03:38 +0800 kernel test robot <lkp@xxxxxxxxx> wrote:

> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 30185b69a2d533c4ba6ca926b8390ce7de495e29
> commit: 295bcca84916cb5079140a89fccb472bb8d1f6e2 linux/bits.h: add compile time sanity check of GENMASK inputs
> date: 4 months ago
> config: s390-randconfig-r001-20200808 (attached as .config)
> compiler: s390-linux-gcc (GCC) 9.3.0
> 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
> git checkout 295bcca84916cb5079140a89fccb472bb8d1f6e2
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All errors (new ones prefixed by >>):
>
> drivers/mux/mmio.c: In function 'mux_mmio_probe':
> drivers/mux/mmio.c:76:20: error: storage size of 'field' isn't known
> 76 | struct reg_field field;
> | ^~~~~
> In file included from include/linux/bits.h:23,
> from include/linux/bitops.h:5,
> from drivers/mux/mmio.c:8:
> >> include/linux/bits.h:25:21: error: first argument to '__builtin_choose_expr' not a constant

I assume the first error is the cause of the second?

struct reg_field is only defined if CONFIG_REGMAP, and that is unset in
this .config. Perhaps drivers/mux/mmio.c should depend on
CONFIG_REGMAP? (cc Peter).