summaryrefslogtreecommitdiff
path: root/src/cmd/6g
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-08-12 19:53:11 -0400
committerRuss Cox <rsc@golang.org>2014-08-12 19:53:11 -0400
commitc36198b3f166e5c266a690ae07e44b9c5ff5496c (patch)
tree2a8e8e46c7ce327c6f1e9061bf309b7e92e06679 /src/cmd/6g
parent56da68842c2bbf9eb49410a4b90a809d6b738026 (diff)
downloadgo-c36198b3f166e5c266a690ae07e44b9c5ff5496c.tar.gz
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://codereview.appspot.com/128070045
Diffstat (limited to 'src/cmd/6g')
-rw-r--r--src/cmd/6g/cgen.c7
-rw-r--r--src/cmd/6g/gsubr.c5
2 files changed, 2 insertions, 10 deletions
diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c
index 4dd505b08..bff235062 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 f3464b7e1..4ac2e9207 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;
}