https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109828
--- Comment #4 from Yann Droneaud <yann at droneaud dot fr> --- I'm still playing with this, for example https://godbolt.org/z/dfjr8veh5, and I've noticed the size of the compound_initializer is incorrect too: struct s { char i; char c[]; }; const struct s *const s = &(static const struct s) { .c = "1", }; Compile too: .quad __compound_literal.4 .type __compound_literal.4, @object .size __compound_literal.4, 1 __compound_literal.4: .zero 1 .string "1" .zero 18446744073709551613 .zero 1 I would have have expected .size to be 3, not 1. Maybe it's the result of computing the size as 3 + -3 + 1, but it's far fetched.