<pre class="notranslate">This text in the spec:

---
As a special case, if the return parameters of a function or method g are equal in
number and individually assignable to the parameters of another function or method f,
then the call f(g(parameters_of_g)) will invoke f after binding the return values of g
to the parameters of f in order. The call of f must contain no parameters other than the
call of g. If f has a final ... parameter, it is assigned the return values of g that
remain after assignment of regular parameters.

---

doesn't preclude the following program:

package main
func f() {}
func g() {}
func main() {
  f(g())
}

though the tools reject it.

The text should be amended to restrict the special case to functions g with more than
one return parameter.</pre>
<pre class="notranslate">go version go1.3beta2 +1de165698f51 Thu May 22 11:45:03 2014 -0400 darwin/amd64

The program is

package a
type S struct {
    x interface{}
    i int
}
func f() {
    c := make(chan int)
    a := [2]*int{}
    for ; ; c &lt;- *a[S{}.i] {
    }
}

$ go build -race src.go 
src.go:6: internal error: f autotmp_0001 (type S) recorded as live on entry</pre>