https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92773
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- Smaller testcase: typedef unsigned char cfg_u8; typedef union { struct { cfg_u8 offset; cfg_u8 value; }; struct { cfg_u8 command; cfg_u8 param; }; } cfg_reg; #define FOO { 0x00, 0x00 }, #define FOO1 FOO FOO FOO FOO FOO FOO FOO FOO FOO #define FOO2 FOO1 FOO1 FOO1 FOO1 FOO1 FOO1 FOO1 FOO1 cfg_reg tas5756m_init_hf3[] = { FOO2 }; now repeat more initializers (the original testcase has plenty). I'd say the warning should be rate-limited somehow or simply only warn once per array element type, not for reach element initialized. In this case the warning is even questionable since the structs are anonymous?