Richard Earnshaw wrote:
On 01/06/15 13:07, Jakub Jelinek wrote:
On Thu, May 07, 2015 at 12:16:32PM +0100, Alan Lawrence wrote:
So for my two cents, or perhaps three:
Any progress on this PR?
A P1 bug that affects several packages stalled for a month isn't a very good
thing... (not to mention broken profiledbootstrap on ARM due to the same
issue).
I've checked and llvm on ARM ignores the alignment on the scalar
arguments...

        Jakub


We're working on some updates to the ABI documents.  If we're going to
break ABI compatibility, even in some corner cases, it would make sense
to only do this once.

One question is whether to treat structs differently from scalars in the ABI specification. Structs raise lots of corner cases! I notice the following oddity, and wonder if anyone can shed any light on this:

typedef __attribute__((aligned(8))) struct { int x; int y; } foo;
typedef struct __attribute__((aligned(8))) { int x; int y; } bar;
typedef struct { int x; int y; } __attribute__((aligned(8))) baz;
typedef struct { int x; int y; } qux __attribute__((aligned(8)));

create typedefs (foo, bar, baz, qux) all with alignment 8, as expected. However, the TYPE_MAIN_VARIANT (an anonymous struct type) has alignment 4 for foo and qux (so the attribute has been applied only to the typedef), but alignment 8 for bar and baz (i.e. the attribute has been applied to the underlying struct).

--Alan


Reply via email to