Mercurial > projects > ldc
diff dmd/struct.c @ 1003:de97188378bc
Fix struct field alignment on x86-64 (for align > 8, like real.alignof)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Fri, 27 Feb 2009 12:35:31 +0100 |
parents | aaade6ded589 |
children | b30fe7e1dbb9 |
line wrap: on
line diff
--- a/dmd/struct.c Thu Feb 26 23:35:39 2009 +0100 +++ b/dmd/struct.c Fri Feb 27 12:35:31 2009 +0100 @@ -130,7 +130,7 @@ void AggregateDeclaration::alignmember(unsigned salign, unsigned size, unsigned *poffset) { - //printf("salign = %d, size = %d, offset = %d\n",salign,size,offset); + //printf("salign = %d, size = %d, offset = %d\n",salign,size,*poffset); if (salign > 1) { int sa; @@ -148,11 +148,11 @@ *poffset = (*poffset + 3) & ~3; // align to dword break; default: - *poffset = (*poffset + salign - 1) & ~(salign - 1); + *poffset = (*poffset + size - 1) & ~(size - 1); break; } } - //printf("result = %d\n",offset); + //printf("result = %d\n",*poffset); }