mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-27 10:03:13 +01:00
Fix struct field alignment on x86-64 (for align > 8, like real.alignof)
This commit is contained in:
@@ -130,7 +130,7 @@ int AggregateDeclaration::isDeprecated()
|
||||
|
||||
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 @@ void AggregateDeclaration::alignmember(unsigned salign, unsigned size, unsigned
|
||||
*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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ int AggregateDeclaration::isDeprecated()
|
||||
|
||||
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;
|
||||
|
||||
@@ -152,11 +152,11 @@ void AggregateDeclaration::alignmember(unsigned salign, unsigned size, unsigned
|
||||
*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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user