]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.power64] cmd/9g, cmd/gc, cmd/ld: fix build.
authorShenghou Ma <minux@golang.org>
Wed, 13 Aug 2014 01:22:27 +0000 (21:22 -0400)
committerShenghou Ma <minux@golang.org>
Wed, 13 Aug 2014 01:22:27 +0000 (21:22 -0400)
1. disable nonsplit stack overflow check
2. disable OLROT recognition
3. emit correct instructions for adding offsets to an address

LGTM=rsc
R=rsc, iant
CC=golang-codereviews
https://golang.org/cl/123310043

src/cmd/9g/cgen.c
src/cmd/gc/walk.c
src/cmd/ld/lib.c

index af87b3a0792fae8ae8d76e8de6a635d5a80ed058..3644ebf8f60ad931060036f73200088e9fe376ba 100644 (file)
@@ -788,6 +788,18 @@ agenr(Node *n, Node *a, Node *res)
        }
 }
 
+static void
+ginsadd(int as, vlong off, Node *dst)
+{
+       Node n1;
+
+       regalloc(&n1, types[tptr], dst);
+       gmove(dst, &n1);
+       ginscon(as, off, &n1);
+       gmove(&n1, dst);
+       regfree(&n1);
+}
+
 /*
  * generate:
  *     res = &n;
@@ -901,7 +913,7 @@ agen(Node *n, Node *res)
                }
                cgen(n->heapaddr, res);
                if(n->xoffset != 0) {
-                       ginscon(optoas(OADD, types[tptr]), n->xoffset, res);
+                       ginsadd(optoas(OADD, types[tptr]), n->xoffset, res);
                }
                break;
 
@@ -913,7 +925,7 @@ agen(Node *n, Node *res)
        case ODOT:
                agen(nl, res);
                if(n->xoffset != 0) {
-                       ginscon(optoas(OADD, types[tptr]), n->xoffset, res);
+                       ginsadd(optoas(OADD, types[tptr]), n->xoffset, res);
                }
                break;
 
@@ -921,7 +933,7 @@ agen(Node *n, Node *res)
                cgen(nl, res);
                cgen_checknil(res);
                if(n->xoffset != 0) {
-                       ginscon(optoas(OADD, types[tptr]), n->xoffset, res);
+                       ginsadd(optoas(OADD, types[tptr]), n->xoffset, res);
                }
                break;
        }
index be929e99edeeb2f4f2009d626bb9e87a26800e00..cb1873f853f3501051fb223bbd58393181dbf14a 100644 (file)
@@ -3217,6 +3217,9 @@ walkrotate(Node **np)
        int w, sl, sr, s;
        Node *l, *r;
        Node *n;
+
+       if(thechar == '9')
+               return;
        
        n = *np;
 
index bdba217478b30a50c0046e5f7536b121c3b28871..b4134da3684be191339e03fa97c8704e20485cf5 100644 (file)
@@ -1045,6 +1045,9 @@ dostkcheck(void)
 {
        Chain ch;
        LSym *s;
+
+       if(thechar == '9')
+               return;
        
        morestack = linklookup(ctxt, "runtime.morestack", 0);
        newstack = linklookup(ctxt, "runtime.newstack", 0);