]> Cypherpunks repositories - gostls13.git/commitdiff
Clear upper bits of 64-bit indexing register when using types smaller than 64 bits.
authorBen Eitzen <eitzenb@golang.org>
Fri, 24 Apr 2009 01:23:34 +0000 (18:23 -0700)
committerBen Eitzen <eitzenb@golang.org>
Fri, 24 Apr 2009 01:23:34 +0000 (18:23 -0700)
APPROVED=ken
OCL=27811
CL=27823

src/cmd/6g/gsubr.c

index dfbbb4999a0bd4a30a666229eaec7d33742de65c..231caa63314b2f393148f2979cc6604cb8e0791e 100644 (file)
@@ -1761,7 +1761,7 @@ sudoaddable(Node *n, Addr *a)
        int o, i, w;
        int oary[10];
        vlong v;
-       Node n1, n2, *nn, *l, *r;
+       Node n1, n2, n3, *nn, *l, *r;
        Node *reg, *reg1;
        Prog *p1;
        Type *t;
@@ -1868,7 +1868,10 @@ oindex:
        if(issigned[r->type->etype])
                t = types[TINT64];
        regalloc(reg1, t, N);
-       cgen(r, reg1);
+       regalloc(&n3, r->type, reg1);
+       cgen(r, &n3);
+       gmove(&n3, reg1);
+       regfree(&n3);
 
        // load the array (reg)
        if(l->ullman <= r->ullman) {