From: zikaeroh Date: Tue, 7 Sep 2021 07:38:40 +0000 (-0700) Subject: cmd/compile: resolve TODO in inl.go X-Git-Tag: go1.18beta1~1459 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d92101f452e10680ad4c8af2d5ad40d940b59214;p=gostls13.git 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 Trust: Keith Randall Run-TryBot: Keith Randall TryBot-Result: Go Bot --- diff --git a/src/cmd/compile/internal/inline/inl.go b/src/cmd/compile/internal/inline/inl.go index d50d8b3516..073373144d 100644 --- a/src/cmd/compile/internal/inline/inl.go +++ b/src/cmd/compile/internal/inline/inl.go @@ -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: