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.

Reply via email to