The Darwin ABI specifies that this struct should be 12 bytes in size and have 4-byte alignment. Current mainline gives it 8-byte alignment and 16-byte size.
struct ULL { int X; long long Y; }; ULL *ULLSize(ULL *ARG, int *P) { *P = sizeof(ULL); return ARG+1; } In general, the special cases in the alignment hooks are special cased to handle DFmode elements, but should include DImode values as well. -Chris -- Summary: Incorrect struct layout on darwin Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sabre at nondot dot org CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: powerpc-darwin http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23067