summaryrefslogtreecommitdiff
path: root/src/cmd/5g/gsubr.c
diff options
context:
space:
mode:
authorKai Backman <kaib@golang.org>2009-06-26 22:04:30 -0700
committerKai Backman <kaib@golang.org>2009-06-26 22:04:30 -0700
commit0b5dd8859d5c65d294f470223ea15c0b7016ebf2 (patch)
treee5964bbadf220f4cdacca3ffb5f423730f098d35 /src/cmd/5g/gsubr.c
parent00f5451227c170733a71fe334b8a540dc882e19d (diff)
downloadgolang-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.c21
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