ref: 090af6255bebf0129c891116b53b31808fe49dc7
parent: deb39a43ae5ed09c7971726cedeb06a9f65ccc6d
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Sat May 6 00:59:28 EDT 2023
7c: node offsets aren't necessarily 0 - fixup packed structs
--- a/sys/src/cmd/7c/cgen.c
+++ b/sys/src/cmd/7c/cgen.c
@@ -1121,7 +1121,8 @@
}
if((m = w % SZ_LONG) > 0){
- nod1.xoffset = nod2.xoffset = w - m;
+ nod1.xoffset += w - m;
+ nod2.xoffset += w - m;
regalloc(&nod3, ®node, Z);
do{
gins(AMOVB, &nod1, &nod3);
@@ -1128,10 +1129,11 @@
gins(AMOVB, &nod3, &nod2);
nod1.xoffset++;
nod2.xoffset++;
+ w--;
}while(--m > 0);
regfree(&nod3);
- nod1.xoffset = 0;
- nod2.xoffset = 0;
+ nod1.xoffset -= w - m;
+ nod2.xoffset -= w - m;
}
w /= SZ_LONG;