diff options
author | Shenghou Ma <minux@golang.org> | 2014-08-13 11:39:07 -0400 |
---|---|---|
committer | Shenghou Ma <minux@golang.org> | 2014-08-13 11:39:07 -0400 |
commit | 28b121f6edd0262b48d744a9127fd7d6c417d2e3 (patch) | |
tree | c259fe82c3213555c65eabd64d3e791b76925712 | |
parent | 04d3bcd72901222de30ba28a643a386da4a5c0a3 (diff) | |
download | go-28b121f6edd0262b48d744a9127fd7d6c417d2e3.tar.gz |
[dev.power64] cmd/9g: do not ignore move instructions even if from and to are samaddr()
Those moves might be significant (e.g. narrowing or widening): on Power64,
we don't distinguish between MOVWD and MOVW.
This fixes divmode.go and bug447.go.
LGTM=rsc
R=rsc, iant
CC=golang-codereviews
https://codereview.appspot.com/125200043
Committer: Russ Cox <rsc@golang.org>
-rw-r--r-- | src/cmd/9g/gg.h | 1 | ||||
-rw-r--r-- | src/cmd/9g/gsubr.c | 25 |
2 files changed, 0 insertions, 26 deletions
diff --git a/src/cmd/9g/gg.h b/src/cmd/9g/gg.h index 319702200..6aa00117f 100644 --- a/src/cmd/9g/gg.h +++ b/src/cmd/9g/gg.h @@ -62,7 +62,6 @@ vlong fieldoffset(Type*, Node*); void sgen(Node*, Node*, int64); void gmove(Node*, Node*); Prog* gins(int, Node*, Node*); -int samaddr(Node*, Node*); void naddr(Node*, Addr*, int); void cgen_aret(Node*, Node*); int componentgen(Node*, Node*); diff --git a/src/cmd/9g/gsubr.c b/src/cmd/9g/gsubr.c index a5ce5f141..d8842796a 100644 --- a/src/cmd/9g/gsubr.c +++ b/src/cmd/9g/gsubr.c @@ -1006,21 +1006,6 @@ hard: return; } -int -samaddr(Node *f, Node *t) -{ - if(f->op != t->op) - return 0; - - switch(f->op) { - case OREGISTER: - if(f->val.u.reg != t->val.u.reg) - break; - return 1; - } - return 0; -} - /* * generate one instruction: * as f, t @@ -1032,16 +1017,6 @@ gins(int as, Node *f, Node *t) Prog *p; Addr af, at; - switch(as) { - case AMOVW: - case AMOVD: - case AFMOVS: - case AFMOVD: - if(f != N && t != N && samaddr(f, t)) - return nil; - break; - } - memset(&af, 0, sizeof af); memset(&at, 0, sizeof at); if(f != N) |