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

Reply via email to