mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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/17393 Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
70d558be8f
commit
7a4022ee36
1 changed files with 6 additions and 6 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue