On Mon, 2 Dec 2019, Richard Biener wrote: > On December 2, 2019 4:27:47 PM GMT+01:00, Alexander Monakov > <amona...@ispras.ru> wrote: > >On Mon, 2 Dec 2019, Richard Biener wrote: > > > >> +typedef long long v4di __attribute__((vector_size(32))); > >> +struct Vec > >> +{ > >> + unsigned int v[8]; > >> +}; > >> + > >> +v4di pun (struct Vec *s) > >> +{ > >> + v4di tem; > >> + __builtin_memcpy (&tem, s, 32); > >> + return tem; > >> +} > >> + > >> +/* We're expecting exactly two stmts, in particular no > >BIT_INSERT_EXPR > >> + and no memcpy call. > >> + _3 = MEM <vector(4) long long int> [(char * {ref-all})s_2(D)]; > >> + return _3; */ > > > >So just to make sure I understand correctly: the type in angle brackets > >does > >not imply 256-bit alignment, and this access has implied alignment of > >just > >32 bits, which is deduced from the type of s_2, right? > > Yes. I should have quoted the more obvious -gimple IL dump instead.
_3 = __MEM <vector(4) long long int, 8> ((char * {ref-all})s_2(D)); so it's actually only 8 bits alignment. Richard.