From: Russ Cox Date: Tue, 12 Aug 2014 23:53:11 +0000 (-0400) Subject: cmd/6c, cmd/6g: avoid address-as-constant in amd64 instructions X-Git-Tag: go1.4beta1~836 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ce35994d4e8411a24833e4db3ddbfc6962eea467;p=gostls13.git cmd/6c, cmd/6g: avoid address-as-constant in amd64 instructions This allows implementing address-of-global as a pc-relative address instead of as a 32-bit integer constant. LGTM=rminnich, iant R=golang-codereviews, rminnich, iant CC=golang-codereviews https://golang.org/cl/128070045 --- diff --git a/src/cmd/6c/sgen.c b/src/cmd/6c/sgen.c index ba1c1f652d..c048e784d4 100644 --- a/src/cmd/6c/sgen.c +++ b/src/cmd/6c/sgen.c @@ -124,10 +124,7 @@ xcom(Node *n) break; case ONAME: - if(flag_largemodel) - n->addable = 9; - else - n->addable = 10; + n->addable = 9; if(n->class == CPARAM || n->class == CAUTO) n->addable = 11; break; diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c index 4dd505b086..bff2350621 100644 --- a/src/cmd/6g/cgen.c +++ b/src/cmd/6g/cgen.c @@ -752,12 +752,7 @@ agenr(Node *n, Node *a, Node *res) regalloc(&n3, types[tptr], res); p1 = gins(ALEAQ, N, &n3); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); - if(flag_largemodel) { - gins(AADDQ, &n2, &n3); - } else { - p1->from.scale = 1; - p1->from.index = n2.val.u.reg; - } + gins(AADDQ, &n2, &n3); goto indexdone; } diff --git a/src/cmd/6g/gsubr.c b/src/cmd/6g/gsubr.c index f3464b7e1c..4ac2e92079 100644 --- a/src/cmd/6g/gsubr.c +++ b/src/cmd/6g/gsubr.c @@ -598,11 +598,8 @@ ismem(Node *n) case ONAME: case OPARAM: case OCLOSUREVAR: - return 1; case OADDR: - if(flag_largemodel) - return 1; - break; + return 1; } return 0; }