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