Commit 7a4022ee authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: fix live variable reuse in orderstmt

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/17393Reviewed-by: default avatarKeith Randall <khr@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
parent 70d558be
......@@ -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 {
t = 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
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment