mirror of
https://github.com/golang/go
synced 2024-11-21 21:34:40 -07:00
gc: handle function calls in arguments to builtin complex operations.
Fixes #2582 R=rsc CC=golang-dev https://golang.org/cl/5574044
This commit is contained in:
parent
858f0b4d95
commit
5ad9e2db28
@ -204,6 +204,8 @@ complexgen(Node *n, Node *res)
|
||||
case OIND:
|
||||
case ONAME: // PHEAP or PPARAMREF var
|
||||
case OCALLFUNC:
|
||||
case OCALLMETH:
|
||||
case OCALLINTER:
|
||||
igen(n, &n1, res);
|
||||
complexmove(&n1, res);
|
||||
regfree(&n1);
|
||||
|
29
test/fixedbugs/bug401.go
Normal file
29
test/fixedbugs/bug401.go
Normal file
@ -0,0 +1,29 @@
|
||||
// $G $D/$F.go || echo "Bug398"
|
||||
|
||||
// Copyright 2011 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Issue 2582
|
||||
package foo
|
||||
|
||||
type T struct {}
|
||||
func (T) cplx() complex128 {
|
||||
for false {} // avoid inlining
|
||||
return complex(1,0)
|
||||
}
|
||||
|
||||
type I interface {
|
||||
cplx() complex128
|
||||
}
|
||||
|
||||
func f(e float32, t T) {
|
||||
|
||||
_ = real(t.cplx())
|
||||
_ = imag(t.cplx())
|
||||
|
||||
var i I
|
||||
i = t
|
||||
_ = real(i.cplx())
|
||||
_ = imag(i.cplx())
|
||||
}
|
Loading…
Reference in New Issue
Block a user