Hi Andy, On Mon, Aug 08, 2022 at 01:18:06PM, +0200, Andy Shevchenko wrote: > On Mon, Aug 8, 2022 at 7:40 AM kernel test robot <lkp@xxxxxxxxx> wrote: > > ... > > > All errors (new ones prefixed by >>): > > > > >> drivers/iio/magnetometer/yamaha-yas530.c:933:19: error: initializer element is not a compile-time constant > > .product_name = yas5xx_product_name[yas530], > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 1 error generated. > > What?! > > The yas530 is a part of the enum, how come that compiler can't see > this? Looks like a Clang bug. That is not what clang is complaining about here, you'll see the same error even if you used '0', '1', or '2' here: drivers/iio/magnetometer/yamaha-yas530.c:933:19: error: initializer element is not a compile-time constant .product_name = yas5xx_product_name[0], ^~~~~~~~~~~~~~~~~~~~~~ 1 error generated. It is complaining that the initializer element ('yas5xx_product_name[yas530]', rather than just 'yas530') is not constant, which is a true complaint if I am reading C11 standard 6.6.7 correctly. GCC 8+ has chosen to accept const structures as constant expressions in designated initializers, which it is allowed to do per 6.6.10. Nick did have a patch to try and match this behavior in clang but the work that was requested doesn't seem to be trivial so it was never finalized: https://reviews.llvm.org/D76096 You'll see the same error with GCC 7: drivers/iio/magnetometer/yamaha-yas530.c:933:19: error: initializer element is not constant .product_name = yas5xx_product_name[yas530], ^~~~~~~~~~~~~~~~~~~ drivers/iio/magnetometer/yamaha-yas530.c:933:19: note: (near initialization for ‘yas5xx_chip_info_tbl[0].product_name’) drivers/iio/magnetometer/yamaha-yas530.c:938:19: error: initializer element is not constant .product_name = yas5xx_product_name[yas532], ^~~~~~~~~~~~~~~~~~~ drivers/iio/magnetometer/yamaha-yas530.c:938:19: note: (near initialization for ‘yas5xx_chip_info_tbl[1].product_name’) drivers/iio/magnetometer/yamaha-yas530.c:943:19: error: initializer element is not constant .product_name = yas5xx_product_name[yas533], ^~~~~~~~~~~~~~~~~~~ drivers/iio/magnetometer/yamaha-yas530.c:943:19: note: (near initialization for ‘yas5xx_chip_info_tbl[2].product_name’) Cheers, Nathan > > 930 static const struct yas5xx_chip_info yas5xx_chip_info_tbl[] = { > > 931 [yas530] = { > > 932 .devid = YAS530_DEVICE_ID, > > > 933 .product_name = yas5xx_product_name[yas530], > > 934 .version_name = yas5xx_version_names[yas530], > > 935 }, > > 936 [yas532] = { > > 937 .devid = YAS532_DEVICE_ID, > > 938 .product_name = yas5xx_product_name[yas532], > > 939 .version_name = yas5xx_version_names[yas532], > > 940 }, > > 941 [yas533] = { > > 942 .devid = YAS532_DEVICE_ID, > > 943 .product_name = yas5xx_product_name[yas533], > > 944 .version_name = yas5xx_version_names[yas533], > > 945 }, > > 946 }; > > -- > With Best Regards, > Andy Shevchenko >