diff options
author | Russ Cox <rsc@golang.org> | 2011-09-19 11:50:53 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-09-19 11:50:53 -0400 |
commit | ad7dea1e96fdebc682b10e02dd14456cdccf4dfa (patch) | |
tree | 4510197b1e2f43f1c6634a2bad45e0212f168a00 | |
parent | f554c90cefd27ba6ee884d00dd4c55fa10a86202 (diff) | |
download | go-ad7dea1e96fdebc682b10e02dd14456cdccf4dfa.tar.gz go-ad7dea1e96fdebc682b10e02dd14456cdccf4dfa.zip |
gc: handle complex CONVNOP
Fixes #2256.
R=ken2
CC=golang-dev
https://golang.org/cl/5044047
-rw-r--r-- | src/cmd/gc/cplx.c | 3 | ||||
-rw-r--r-- | test/ken/cplx2.go | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/cmd/gc/cplx.c b/src/cmd/gc/cplx.c index 5bc8d64aa2..52038e71c3 100644 --- a/src/cmd/gc/cplx.c +++ b/src/cmd/gc/cplx.c @@ -133,6 +133,9 @@ complexgen(Node *n, Node *res) dump("\ncomplexgen-n", n); dump("complexgen-res", res); } + + while(n->op == OCONVNOP) + n = n->left; // pick off float/complex opcodes switch(n->op) { diff --git a/test/ken/cplx2.go b/test/ken/cplx2.go index b36e93ecd6..89f4a04181 100644 --- a/test/ken/cplx2.go +++ b/test/ken/cplx2.go @@ -105,4 +105,16 @@ func main() { println("opcode x", ce, Ce) panic("fail") } + + r32 := real(complex64(ce)) + if r32 != float32(real(Ce)) { + println("real(complex64(ce))", r32, real(Ce)) + panic("fail") + } + + r64 := real(complex128(ce)) + if r64 != real(Ce) { + println("real(complex128(ce))", r64, real(Ce)) + panic("fail") + } } |