more code fiddling
R=r
OCL=28201
CL=28201
diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c
index a2fbea4..d12bbef6 100644
--- a/src/cmd/6g/cgen.c
+++ b/src/cmd/6g/cgen.c
@@ -72,8 +72,8 @@
break;
}
- if(sudoaddable(res, &addr)) {
- a = optoas(OAS, res->type);
+ a = optoas(OAS, res->type);
+ if(sudoaddable(a, res, &addr)) {
if(f) {
regalloc(&n2, res->type, N);
cgen(n, &n2);
@@ -112,8 +112,8 @@
goto ret;
}
- if(sudoaddable(n, &addr)) {
- a = optoas(OAS, n->type);
+ a = optoas(OAS, n->type);
+ if(sudoaddable(a, n, &addr)) {
if(res->op == OREGISTER) {
p1 = gins(a, N, res);
p1->from = addr;
@@ -309,7 +309,7 @@
regalloc(&n1, nl->type, res);
cgen(nl, &n1);
- if(sudoaddable(nr, &addr)) {
+ if(sudoaddable(a, nr, &addr)) {
p1 = gins(a, N, &n1);
p1->from = addr;
gmove(&n1, res);
@@ -317,7 +317,6 @@
regfree(&n1);
goto ret;
}
-
regalloc(&n2, nr->type, N);
cgen(nr, &n2);
} else {