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