]> Cypherpunks.ru repositories - gostls13.git/commitdiff
gc: fix crash for nested complex division
authorRuss Cox <rsc@golang.org>
Wed, 23 Jun 2010 14:55:50 +0000 (10:55 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 23 Jun 2010 14:55:50 +0000 (10:55 -0400)
R=ken2
CC=golang-dev
https://golang.org/cl/1720043

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

index 95fafe6dde7c74945260ba319b8f86a7793b77ff..e25f3cabb91b95f515d9d8132e591748029eb079 100644 (file)
@@ -184,6 +184,7 @@ complexgen(Node *n, Node *res)
        case OINDEX:
        case OIND:
        case ONAME:     // PHEAP or PPARAMREF var
+       case OCALLFUNC:
                igen(n, &n1, res);
                complexmove(&n1, res);
                regfree(&n1);
@@ -245,7 +246,6 @@ complexgen(Node *n, Node *res)
        case OMUL:
                complexmul(nl, nr, res);
                break;
-       // ODIV call a runtime function
        }
 }
 
index c9ba2e9b934e689167cbbe18daae0d45e097bfca..d55d6a6e3974945b86ae2cccdb179436d6f9e179 100644 (file)
@@ -35,4 +35,10 @@ func main() {
        // real, imag, cmplx
        c3 := cmplx(real(c2)+3, imag(c2)-5) + c2
        fmt.Printf("c = %G\n", c3)
+
+       // compiler used to crash on nested divide
+       c4 := cmplx(real(c3/2), imag(c3/2))
+       if c4 != c3/2 {
+               fmt.Printf("c3 = %G != c4 = %G\n", c3, c4)
+       }
 }