]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/escape/assign.go
cmd/compile/internal/escape: optimize indirect closure calls
[gostls13.git] / src / cmd / compile / internal / escape / assign.go
index 80697bf37b3ee6be3ae995537097ed5bcdcf810e..1c1d5799adae4f9c8f15e3ccb5589f44dbfea7a8 100644 (file)
@@ -39,10 +39,10 @@ func (e *escape) addr(n ir.Node) hole {
                if n.X.Type().IsArray() {
                        k = e.addr(n.X)
                } else {
-                       e.discard(n.X)
+                       e.mutate(n.X)
                }
        case ir.ODEREF, ir.ODOTPTR:
-               e.discard(n)
+               e.mutate(n)
        case ir.OINDEXMAP:
                n := n.(*ir.IndexExpr)
                e.discard(n.X)
@@ -52,6 +52,10 @@ func (e *escape) addr(n ir.Node) hole {
        return k
 }
 
+func (e *escape) mutate(n ir.Node) {
+       e.expr(e.mutatorHole(), n)
+}
+
 func (e *escape) addrs(l ir.Nodes) []hole {
        var ks []hole
        for _, n := range l {