From f285537b7f16a726284b0a0b482a8733e16d9f01 Mon Sep 17 00:00:00 2001 From: Shenghou Ma Date: Wed, 13 Aug 2014 11:39:07 -0400 Subject: [PATCH] [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://golang.org/cl/125200043 --- src/cmd/9g/gg.h | 1 - src/cmd/9g/gsubr.c | 25 ------------------------- 2 files changed, 26 deletions(-) diff --git a/src/cmd/9g/gg.h b/src/cmd/9g/gg.h index 319702200c..6aa00117f8 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 a5ce5f141f..d8842796a8 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) -- 2.50.0