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:
Matthew Dempsky 2018-02-27 11:14:11 -08:00
parent 230b0bad1f
commit d7cd61ceaa
2 changed files with 16 additions and 1 deletions

View file

@ -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)
}
}

View 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 {
}
}