https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65028
--- Comment #37 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Jan Hubicka from comment #36) > Hi, > I do not really see the reason for wrong code, but the merging logic seems > weird for me. There is no merging done when we get two different alignments > and also we seem to immediately drop lattice to bottom when the incomming > parameter alignment has no .known bit set. This means we do pesimistic > propagation. > > I..e in testcase > > void *b; > __attribute__ ((noinline)) > static void a (void *a) > { > memcpy (a,b,1000000); > } > static void aa (void *a) __attribute__ ((alias("a"))); > > tt(void) > { > int i[10000]; > short c; > > aa(&c); > a(i); > } > > We end up with algnment unkonwn instead of a. (did not managed to reproduce > the wrong alignment here). What about the following: Can you upload the patch as an attachment so that I can try it on x32? Thanks.