]> Cypherpunks repositories - gostls13.git/commitdiff
6c bug with large constants
authorKen Thompson <ken@golang.org>
Wed, 12 Nov 2008 02:15:36 +0000 (18:15 -0800)
committerKen Thompson <ken@golang.org>
Wed, 12 Nov 2008 02:15:36 +0000 (18:15 -0800)
R=r
OCL=19056
CL=19056

src/cmd/6c/txt.c

index c7e52102f3e29938c7cce73aa5194f8855fb0044..595e102fcd7520d14b52e13f35e4b0bd71b7de3e 100644 (file)
@@ -642,6 +642,17 @@ gmove(Node *f, Node *t)
 /*
  * load
  */
+       if(ft == TVLONG || ft == TUVLONG)
+       if(f->op == OCONST)
+       if(f->vconst > 0x7fffffffLL || f->vconst < -0x7fffffffLL)
+       if(t->op != OREGISTER) {
+               regalloc(&nod, f, Z);
+               gmove(f, &nod);
+               gmove(&nod, t);
+               regfree(&nod);
+               return;
+       }
+
        if(f->op == ONAME || f->op == OINDREG ||
           f->op == OIND || f->op == OINDEX)
        switch(ft) {