]> Cypherpunks repositories - gostls13.git/commitdiff
gc: handle complex CONVNOP
authorRuss Cox <rsc@golang.org>
Mon, 19 Sep 2011 15:50:53 +0000 (11:50 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 19 Sep 2011 15:50:53 +0000 (11:50 -0400)
Fixes #2256.

R=ken2
CC=golang-dev
https://golang.org/cl/5044047

src/cmd/gc/cplx.c
test/ken/cplx2.go

index 5bc8d64aa2abe593855e831909c0671150ea5901..52038e71c3cf66a136f1448dc15c07f1fc2013e3 100644 (file)
@@ -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) {
index b36e93ecd66493ef724b663bb051ac416a6b7458..89f4a04181e44926d5cbecf9a448072ee34d5fe5 100644 (file)
@@ -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")
+       }
 }