http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50417

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Target|sh*-*-* arm*-*-* avr*-*-*   |sh*-*-* arm*-*-*
                 CC|                            |gjl at gcc dot gnu.org

--- Comment #4 from Georg-Johann Lay <gjl at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #1)
> The middle-end does not know anything about the parameters alignment.

But the following code will use SImode load / store, even on strict-alignment
backends

void test (const int* a, int* b)
{
  *b = *a;
}

If SImode operations are in order here, why not in memcpy et al. provided it is
feeded with int*?

In the case where an unaligned pointer is used in *b = *a and this causes, e.g.
 a trap, this is in order.  Similar should apply for memcpy on strict-alignment
machines if it gets an unaligned int* for example and the size is a multiple of
the alignment requirement.

BTW: AVR is an 8-bit machine that copies in chunks of 1 byte, this applies also
for 4.5 and older.  avr-gcc is /not/ a strict alignment backend.  Thul removed
from the targets.

Reply via email to