1
0
mirror of https://github.com/golang/go synced 2024-11-11 23:50:22 -07:00

cmd/compile: resolve TODO in inl.go

If the condition is a bool constant, there's no need to walk both
branches.

Passes toolstash -cmp.

Change-Id: I4ee5e3553ce07c2213efba0d33d869b4a1b57783
Reviewed-on: https://go-review.googlesource.com/c/go/+/347911
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Trust: Keith Randall <khr@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
zikaeroh 2021-09-07 00:38:40 -07:00 committed by Matthew Dempsky
parent 903958d2f5
commit d92101f452

View File

@ -398,10 +398,14 @@ func (v *hairyVisitor) doNode(n ir.Node) bool {
n := n.(*ir.IfStmt)
if ir.IsConst(n.Cond, constant.Bool) {
// This if and the condition cost nothing.
// TODO(rsc): It seems strange that we visit the dead branch.
return doList(n.Init(), v.do) ||
doList(n.Body, v.do) ||
doList(n.Else, v.do)
if doList(n.Init(), v.do) {
return true
}
if ir.BoolVal(n.Cond) {
return doList(n.Body, v.do)
} else {
return doList(n.Else, v.do)
}
}
case ir.ONAME: