https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70755

Richard Earnshaw <rearnsha at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |arm
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |WONTFIX

--- Comment #1 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
This is a deliberate design choice.  By doing this we gain significant benefits
from having aligned objects, which helps with data copying and other
optimizations.

Consider, for example, the object

struct x
{
  char a;
  char b;
  char c;
  char d;
};

struct x A, B;

f()
{
  B = A;
}

Since the objects are aligned then this function can be optimized to single
32-bit load and store operations that work very efficiently.

As you've noticed, it is possible to force the alignment down to the
architectural minimums by annotations, but for most users it makes little
difference and the defaults are preferable.

Reply via email to