On Wed, 26 Feb 2025 at 06:36, Bernhard Beschow <shen...@gmail.com> wrote: > > > > Am 25. Februar 2025 17:00:53 UTC schrieb Peter Maydell > <peter.mayd...@linaro.org>: > >On Tue, 25 Feb 2025 at 15:42, Peter Maydell <peter.mayd...@linaro.org> wrote: > >> The C compiler for the OpenSUSE CI job doesn't seem to like this: > >> https://gitlab.com/pm215/qemu/-/jobs/9239416833 > >> > >> ../hw/arm/fsl-imx8mp.c: In function ‘fsl_imx8mp_realize’: > >> ../hw/arm/fsl-imx8mp.c:382:15: error: initializer element is not constant > >> { fsl_imx8mp_memmap[FSL_IMX8MP_UART1].addr, > >> FSL_IMX8MP_UART1_IRQ }, > >> ^~~~~~~~~~~~~~~~~ > >> ../hw/arm/fsl-imx8mp.c:382:15: note: (near initialization for > >> ‘serial_table[0].addr’) > >> ../hw/arm/fsl-imx8mp.c:383:15: error: initializer element is not constant > >> { fsl_imx8mp_memmap[FSL_IMX8MP_UART2].addr, > >> FSL_IMX8MP_UART2_IRQ }, > >> ^~~~~~~~~~~~~~~~~ > >> > >> This is (gcc 7.5.0 "cc (SUSE Linux) 7.5.0") apparently. That's > >> a pretty old compiler, only just within the bounds of our > >> version requirements (which are 7.4 or better), so I'm guessing > >> it's just not as smart about figuring out that the > >> initializer here really is a constant value. > >> > >> I'll fix this up by dropping the "const" from the serial_table[] > >> etc definitions. > > > >More specifically, you have to drop 'static const', leaving just 'struct'. > >Minimal repro: https://godbolt.org/z/5css4hv67 > > I haven't checked, but this might be caused by the multiplications (... * KiB)
The godbolt repro case just uses plain constant values in the memmap array, so it's not the multiplication that's at fault. -- PMM