summaryrefslogtreecommitdiff
path: root/src/cmd/6g/cgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6g/cgen.c')
-rw-r--r--src/cmd/6g/cgen.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c
index fca4b64dd..24f88a416 100644
--- a/src/cmd/6g/cgen.c
+++ b/src/cmd/6g/cgen.c
@@ -510,9 +510,6 @@ agen(Node *n, Node *res)
regfree(&n4);
}
- if(w == 0)
- fatal("index is zero width");
-
// constant index
if(isconst(nr, CTINT)) {
if(isconst(nl, CTSTR))
@@ -600,7 +597,9 @@ agen(Node *n, Node *res)
gmove(&n1, &n3);
}
- if(w == 1 || w == 2 || w == 4 || w == 8) {
+ if(w == 0) {
+ // nothing to do
+ } else if(w == 1 || w == 2 || w == 4 || w == 8) {
p1 = gins(ALEAQ, &n2, &n3);
p1->from.scale = w;
p1->from.index = p1->from.type;
@@ -608,7 +607,6 @@ agen(Node *n, Node *res)
} else {
ginscon(optoas(OMUL, t), w, &n2);
gins(optoas(OADD, types[tptr]), &n2, &n3);
- gmove(&n3, res);
}
indexdone: