mirror of
https://github.com/golang/go
synced 2024-10-14 20:05:36 +00:00
cmd/compile: fix inlining of constant if statements
We accidentally overlooked needing to still visit Ninit for OIF statements with constant conditions in golang.org/cl/96778. Fixes #24120. Change-Id: I5b341913065ff90e1163fb872b9e8d47e2a789d2 Reviewed-on: https://go-review.googlesource.com/97475 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
230b0bad1f
commit
d7cd61ceaa
|
@ -363,7 +363,8 @@ func (v *hairyVisitor) visit(n *Node) bool {
|
|||
case OIF:
|
||||
if Isconst(n.Left, CTBOOL) {
|
||||
// This if and the condition cost nothing.
|
||||
return v.visitList(n.Nbody) || v.visitList(n.Rlist)
|
||||
return v.visitList(n.Ninit) || v.visitList(n.Nbody) ||
|
||||
v.visitList(n.Rlist)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
14
test/fixedbugs/issue24120.go
Normal file
14
test/fixedbugs/issue24120.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
// compile
|
||||
|
||||
// Copyright 2018 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package p
|
||||
|
||||
var F func(int)
|
||||
|
||||
func G() {
|
||||
if F(func() int { return 1 }()); false {
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue