Fix struct field alignment on x86-64 (for align > 8, like real.alignof)

This commit is contained in:
Frits van Bommel
2009-02-27 12:35:31 +01:00
parent 03ce6604a0
commit 2beff65988
2 changed files with 6 additions and 6 deletions

View File

@@ -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);
}

View File

@@ -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);
}