http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55634
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-08-05 CC| |ramana at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- On AArch64 with no strict alignment we end up generating with .002t.original trunk { T tmp = *a + *b; extern void * memcpy (void *, const void *, long unsigned int); T tmp = *a + *b; MEM[(char * {ref-all})result] = MEM[(char * {ref-all})&tmp];, result; } On A32 or indeed AArch64 with -mstrict-align we end up generating { T tmp = *a + *b; extern void * memcpy (void *, const void *, long unsigned int); T tmp = *a + *b; memcpy (result, (const void *) &tmp, 16); } Where do you expect the memcpy to have been made redundant or a use of the appropriate movmisalign insn - richi ? Ramana