summaryrefslogtreecommitdiff
path: root/sys/src/cmd/7c
diff options
context:
space:
mode:
authorSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-06 04:59:28 +0000
committerSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-06 04:59:28 +0000
commit090af6255bebf0129c891116b53b31808fe49dc7 (patch)
treebe6753f287998fec519dad5906aca1bd08f9c59b /sys/src/cmd/7c
parentdeb39a43ae5ed09c7971726cedeb06a9f65ccc6d (diff)
7c: node offsets aren't necessarily 0 - fixup packed structs
Diffstat (limited to 'sys/src/cmd/7c')
-rw-r--r--sys/src/cmd/7c/cgen.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/src/cmd/7c/cgen.c b/sys/src/cmd/7c/cgen.c
index 76c5795e4..6f80f9f36 100644
--- a/sys/src/cmd/7c/cgen.c
+++ b/sys/src/cmd/7c/cgen.c
@@ -1121,17 +1121,19 @@ copy:
}
if((m = w % SZ_LONG) > 0){
- nod1.xoffset = nod2.xoffset = w - m;
+ nod1.xoffset += w - m;
+ nod2.xoffset += w - m;
regalloc(&nod3, &regnode, Z);
do{
gins(AMOVB, &nod1, &nod3);
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;