]> Cypherpunks repositories - gostls13.git/commitdiff
fix arm build, add 64 bit cgen_asop
authorKai Backman <kaib@golang.org>
Fri, 16 Oct 2009 19:02:14 +0000 (12:02 -0700)
committerKai Backman <kaib@golang.org>
Fri, 16 Oct 2009 19:02:14 +0000 (12:02 -0700)
R=rsc
APPROVED=rsc
DELTA=21  (21 added, 0 deleted, 0 changed)
OCL=35845
CL=35845

src/cmd/5g/ggen.c

index 13b58790648135a3d5da254ede4be17ec0ce5c7b..f1829e5df73abb9d563dc42d7071e7b093ebb143 100644 (file)
@@ -395,6 +395,8 @@ cgen_asop(Node *n)
                goto hard;
        if(!isint[nr->type->etype])
                goto hard;
+       if(is64(nl->type) || is64(nr->type))
+               goto hard64;
 
        switch(n->etype) {
        case OADD:
@@ -454,6 +456,25 @@ hard:
        regfree(&n1);
        regfree(&n2);
        regfree(&n4);
+       goto ret;
+
+hard64:
+       if(nr->ullman > nl->ullman) {
+               tempname(&n2, nr->type);
+               cgen(nr, &n2);
+               igen(nl, &n1, N);
+       } else {
+               igen(nl, &n1, N);
+               tempname(&n2, nr->type);
+               cgen(nr, &n2);
+       }
+
+       n3 = *n;
+       n3.left = &n1;
+       n3.right = &n2;
+       n3.op = n->etype;
+
+       cgen(&n3, &n1);
 
 ret:
        ;