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:
|
case OIF:
|
||||||
if Isconst(n.Left, CTBOOL) {
|
if Isconst(n.Left, CTBOOL) {
|
||||||
// This if and the condition cost nothing.
|
// 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