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
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*);
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
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)