summaryrefslogtreecommitdiff
path: root/sys/src/cmd/7c
diff options
context:
space:
mode:
authorSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-04 06:27:04 +0000
committerSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2023-05-04 06:27:04 +0000
commitdeb39a43ae5ed09c7971726cedeb06a9f65ccc6d (patch)
tree2cf843cefc40acd92fb394b9b9f42169a63529e7 /sys/src/cmd/7c
parentc3ca13a71a1d8928c7c7b931e0423ffe0544418a (diff)
7c: copy the remainder of packed structs
Diffstat (limited to 'sys/src/cmd/7c')
-rw-r--r--sys/src/cmd/7c/cgen.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/src/cmd/7c/cgen.c b/sys/src/cmd/7c/cgen.c
index 3cb84a65c..76c5795e4 100644
--- a/sys/src/cmd/7c/cgen.c
+++ b/sys/src/cmd/7c/cgen.c
@@ -1120,6 +1120,20 @@ copy:
n->type = t;
}
+ if((m = w % SZ_LONG) > 0){
+ nod1.xoffset = nod2.xoffset = w - m;
+ regalloc(&nod3, &regnode, Z);
+ do{
+ gins(AMOVB, &nod1, &nod3);
+ gins(AMOVB, &nod3, &nod2);
+ nod1.xoffset++;
+ nod2.xoffset++;
+ }while(--m > 0);
+ regfree(&nod3);
+ nod1.xoffset = 0;
+ nod2.xoffset = 0;
+ }
+
w /= SZ_LONG;
if(w <= 5) {
layout(&nod1, &nod2, w, 0, Z);