changeset 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 c749648ed2b8
children 45ed9e125a00
files dmd/struct.c dmd2/struct.c
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
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);
 }
 
 
--- a/dmd2/struct.c	Thu Feb 26 23:35:39 2009 +0100
+++ b/dmd2/struct.c	Fri Feb 27 12:35:31 2009 +0100
@@ -134,7 +134,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;
 
@@ -152,11 +152,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);
 }