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

From: Peter Rosin
Date: Wed Aug 12 2020 - 09:37:51 EST


On 2020-08-11 06:27, Andrew Morton wrote:
> 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).
>
>

Thanks for the CC, and yes, that sounds about right. If it shouldn't
just "select REGMAP" instead?

I'm not sure when one should "select" and when one should "depends on"?

Cheers,
Peter