aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-10-26 01:26:33 +0200
committerRuss Cox <rsc@golang.org>2010-10-26 01:26:33 +0200
commitb0ad7a42686bd75a7276f03dac084f907d59f83c (patch)
tree14f6a16d835d2ee3ff66056e53816a4c87fa589e
parent41b5fb47612d35606db29d5b740c5ea40b29a0c5 (diff)
downloadgo-b0ad7a42686bd75a7276f03dac084f907d59f83c.tar.gz
go-b0ad7a42686bd75a7276f03dac084f907d59f83c.zip
5g: complex "regalloc"
R=ken2 CC=golang-dev https://golang.org/cl/2727041
-rw-r--r--src/cmd/5g/gsubr.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd/5g/gsubr.c b/src/cmd/5g/gsubr.c
index 3b68ac1bc2..7089b71850 100644
--- a/src/cmd/5g/gsubr.c
+++ b/src/cmd/5g/gsubr.c
@@ -305,6 +305,11 @@ regalloc(Node *n, Type *t, Node *o)
goto out;
yyerror("out of floating point registers");
goto err;
+
+ case TCOMPLEX64:
+ case TCOMPLEX128:
+ tempname(n, t);
+ return;
}
yyerror("regalloc: unknown type %T", t);
@@ -334,6 +339,8 @@ regfree(Node *n)
print("regalloc fix %d float %d\n", fixfree, floatfree);
}
+ if(n->op == ONAME && iscomplex[n->type->etype])
+ return;
if(n->op != OREGISTER && n->op != OINDREG)
fatal("regfree: not a register");
i = n->val.u.reg;