diff options
author | Russ Cox <rsc@golang.org> | 2010-10-26 01:26:33 +0200 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-10-26 01:26:33 +0200 |
commit | b0ad7a42686bd75a7276f03dac084f907d59f83c (patch) | |
tree | 14f6a16d835d2ee3ff66056e53816a4c87fa589e | |
parent | 41b5fb47612d35606db29d5b740c5ea40b29a0c5 (diff) | |
download | go-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.c | 7 |
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; |