]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: eliminate dead code in walkappend
authorMatthew Dempsky <mdempsky@google.com>
Fri, 1 Apr 2016 23:43:43 +0000 (16:43 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Sat, 2 Apr 2016 00:06:30 +0000 (00:06 +0000)
The IsStruct case is meant to handle cases like append(f()) where f's
result parameters are something like ([]int, int, int). However, at
this point in the compiler we've already rewritten append(f()) into
"tmp1, tmp2, tmp3 := f(); append(tmp1, tmp2, tmp3)".

As further evidence, the t.Elem() is not a valid method call for a
struct type anyway, which would trigger the Fatalf call in Type.Elem
if this code was ever hit.

Change-Id: Ia066f93df66ee3fadc9a9a0f687be7b5263af163
Reviewed-on: https://go-review.googlesource.com/21427
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/gc/walk.go

index 6576daadac1fb0e7e905e6b75d97e84979e47305..77e6c4e1c0719ab370e4a9d91b3fcc3f62f3b07d 100644 (file)
@@ -2893,10 +2893,6 @@ func walkappend(n *Node, init *Nodes, dst *Node) *Node {
 
        nsrc := n.List.First()
 
-       // Resolve slice type of multi-valued return.
-       if nsrc.Type.IsStruct() {
-               nsrc.Type = nsrc.Type.Elem().Elem()
-       }
        argc := n.List.Len() - 1
        if argc < 1 {
                return nsrc