]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix live variable reuse in orderstmt
authorMatthew Dempsky <mdempsky@google.com>
Thu, 3 Dec 2015 20:14:07 +0000 (12:14 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 3 Dec 2015 21:29:22 +0000 (21:29 +0000)
The call "poptemp(t, order)" at line 906 should match up with the
assignment "t := marktemp(order)" at line 770, so use a new temporary
variable for stripping the ODCL nodes from a "case x := <-ch" node's
Ninit list.

Fixes #13469.
Passes toolstash/buildall.

Change-Id: Ia7eabd40c79cfdcb83df00b6fbd0954e0c44c5c7
Reviewed-on: https://go-review.googlesource.com/17393
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>

src/cmd/compile/internal/gc/order.go

index 04ab2b0a847fd63daf0c3e31c20a170dfd10f6a5..84b96c2d7b921a804a656ed529bbda3270a36ab1 100644 (file)
@@ -796,14 +796,14 @@ func orderstmt(n *Node, order *Order) {
                                // Delete the ODCL nodes here and recreate them inside the body below.
                                case OSELRECV, OSELRECV2:
                                        if r.Colas {
-                                               = r.Ninit
-                                               if t != nil && t.N.Op == ODCL && t.N.Left == r.Left {
-                                                       t = t.Next
+                                               init := r.Ninit
+                                               if init != nil && init.N.Op == ODCL && init.N.Left == r.Left {
+                                                       init = init.Next
                                                }
-                                               if t != nil && t.N.Op == ODCL && r.List != nil && t.N.Left == r.List.N {
-                                                       t = t.Next
+                                               if init != nil && init.N.Op == ODCL && r.List != nil && init.N.Left == r.List.N {
+                                                       init = init.Next
                                                }
-                                               if t == nil {
+                                               if init == nil {
                                                        r.Ninit = nil
                                                }
                                        }