diff options
author | Kai Backman <kaib@golang.org> | 2009-06-26 22:04:30 -0700 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2009-06-26 22:04:30 -0700 |
commit | 0b5dd8859d5c65d294f470223ea15c0b7016ebf2 (patch) | |
tree | e5964bbadf220f4cdacca3ffb5f423730f098d35 /src/cmd/5g/gsubr.c | |
parent | 00f5451227c170733a71fe334b8a540dc882e19d (diff) | |
download | golang-0b5dd8859d5c65d294f470223ea15c0b7016ebf2.tar.gz |
working on bgen
- removed smallint optimizations
- lifted raddr from 5c
- add back %R, was used in gc/* causing -g to crash
- changed naddr OREGISTER to emit D_REG instead of D_OREG
R=rsc
APPROVED=rsc
DELTA=74 (38 added, 28 deleted, 8 changed)
OCL=30799
CL=30822
Diffstat (limited to 'src/cmd/5g/gsubr.c')
-rw-r--r-- | src/cmd/5g/gsubr.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/cmd/5g/gsubr.c b/src/cmd/5g/gsubr.c index 48eaa1602..71f5ba042 100644 --- a/src/cmd/5g/gsubr.c +++ b/src/cmd/5g/gsubr.c @@ -1017,6 +1017,25 @@ gins(int as, Node *f, Node *t) } /* + * insert n into reg slot of p + */ +void +raddr(Node *n, Prog *p) +{ + Addr a; + + naddr(n, &a); + if(a.type != D_REG && a.type != D_FREG) { + if(n) + fatal("bad in raddr: %O", n->op); + else + fatal("bad in raddr: <null>"); + p->reg = NREG; + } else + p->reg = a.reg; +} + +/* * generate code to compute n; * make a refer to result. */ @@ -1035,7 +1054,7 @@ naddr(Node *n, Addr *a) break; case OREGISTER: - a->type = D_OREG; + a->type = D_REG; if (n->val.u.reg <= REGALLOC_RMAX) a->reg = n->val.u.reg; else |