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

2020-08-12 Thread Peter Rosin
On 2020-08-11 06:27, Andrew Morton wrote:
> On Sat, 8 Aug 2020 08:03:38 +0800 kernel test robot  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 
>>
>> 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


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

2020-08-10 Thread Andrew Morton
On Sat, 8 Aug 2020 08:03:38 +0800 kernel test robot  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 
> 
> 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).




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

2020-08-07 Thread kernel test robot
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 

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
  25 |  (BUILD_BUG_ON_ZERO(__builtin_choose_expr( \
 | ^
   include/linux/build_bug.h:16:62: note: in definition of macro 
'BUILD_BUG_ON_ZERO'
  16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); 
})))
 |  ^
   include/linux/bits.h:39:3: note: in expansion of macro 'GENMASK_INPUT_CHECK'
  39 |  (GENMASK_INPUT_CHECK(h, l) + __GENMASK(h, l))
 |   ^~~
   drivers/mux/mmio.c:96:15: note: in expansion of macro 'GENMASK'
  96 |   if (mask != GENMASK(field.msb, field.lsb)) {
 |   ^~~
   include/linux/build_bug.h:16:51: error: bit-field '' width not an 
integer constant
  16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); 
})))
 |   ^
   include/linux/bits.h:25:3: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
  25 |  (BUILD_BUG_ON_ZERO(__builtin_choose_expr( \
 |   ^
   include/linux/bits.h:39:3: note: in expansion of macro 'GENMASK_INPUT_CHECK'
  39 |  (GENMASK_INPUT_CHECK(h, l) + __GENMASK(h, l))
 |   ^~~
   drivers/mux/mmio.c:96:15: note: in expansion of macro 'GENMASK'
  96 |   if (mask != GENMASK(field.msb, field.lsb)) {
 |   ^~~
   drivers/mux/mmio.c:102:15: error: implicit declaration of function 
'devm_regmap_field_alloc' [-Werror=implicit-function-declaration]
 102 |   fields[i] = devm_regmap_field_alloc(dev, regmap, field);
 |   ^~~
   drivers/mux/mmio.c:76:20: warning: unused variable 'field' 
[-Wunused-variable]
  76 |   struct reg_field field;
 |^
   cc1: some warnings being treated as errors

vim +/__builtin_choose_expr +25 include/linux/bits.h

15  
16  /*
17   * Create a contiguous bitmask starting at bit position @l and ending at
18   * position @h. For example
19   * GENMASK_ULL(39, 21) gives us the 64bit vector 0x00e0.
20   */
21  #if !defined(__ASSEMBLY__) && \
22  (!defined(CONFIG_CC_IS_GCC) || CONFIG_GCC_VERSION >= 49000)
  > 23  #include 
24  #define GENMASK_INPUT_CHECK(h, l) \
  > 25  (BUILD_BUG_ON_ZERO(__builtin_choose_expr( \
26  __builtin_constant_p((l) > (h)), (l) > (h), 0)))
27  #else
28  /*
29   * BUILD_BUG_ON_ZERO is not available in h files included from asm 
files,
30   * disable the input check if that is the case.
31   */
32  #define GENMASK_INPUT_CHECK(h, l) 0
33  #endif
34  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org


.config.gz
Description: application/gzip