Skip to content

Commit

Permalink
cmd/compile: fix live variable reuse in orderstmt
Browse files Browse the repository at this point in the history
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 golang#13469.
Passes toolstash/buildall.

Change-Id: Ia7eabd40c79cfdcb83df00b6fbd0954e0c44c5c7
Reviewed-on: https://go-review.googlesource.com/17393
Reviewed-by: Keith Randall <[email protected]>
Run-TryBot: Matthew Dempsky <[email protected]>
  • Loading branch information
mdempsky committed Dec 3, 2015
1 parent 70d558b commit 7a4022e
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/cmd/compile/internal/gc/order.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
Expand Down

0 comments on commit 7a4022e

Please sign in to comment.