https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108498
--- Comment #24 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Eric Botcazou from comment #23) > > The C/C++ FEs since r9-6625-gbec1da64aec26a490 turn some array initializers > > into strings. > > Ouch. I'm not sure that's worthwhile if the arrays are not byte-aligned. They actually are byte aligned. What happens is basically we have first some INTEGER_CST byte-sized store, then a STRING_CST store and then an INTEGER_CST store of just a few bits. So, the conditions for merging the first INTEGER_CST with the STRING_CST are met, string_concatenate is set, everything is contiguous and so the bit store at the end is merged in (in the testcase there are some other stores in between too, all INTEGER_CSTs). In the end we got a group with 71 bits with byte aligned start and we just store 64 bits and leave those 7 uninitialized.