diff options
Diffstat (limited to 'src/cmd/6g/cgen.c')
-rw-r--r-- | src/cmd/6g/cgen.c | 8 |
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: |