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

Reply via email to