1
0
mirror of https://github.com/golang/go synced 2024-11-26 14:36:52 -07:00

[dev.regabi] cmd/compile: fix linux-amd64-noopt builder

CL 284223 tightened down the allowed expressions in mayCall, but
evidently a little too tight. The linux-amd64-noopt builder does in
fact see expressions with non-empty Init lists in arguments list.

Since I believe these can only appear on the RHS of LogicalExpr
expressions, this CL relaxes that one case.

Change-Id: I1e6bbd0449778c40ed2610b3e1ef6a825a84ada7
Reviewed-on: https://go-review.googlesource.com/c/go/+/284226
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
Matthew Dempsky 2021-01-16 22:27:23 -08:00
parent 59ff93fe64
commit e3027c6828

View File

@ -305,6 +305,14 @@ func mayCall(n ir.Node) bool {
// before we start marshaling args for a call. See issue 16760. // before we start marshaling args for a call. See issue 16760.
return true return true
case ir.OANDAND, ir.OOROR:
n := n.(*ir.LogicalExpr)
// The RHS expression may have init statements that
// should only execute conditionally, and so cannot be
// pulled out to the top-level init list. We could try
// to be more precise here.
return len(n.Y.Init()) != 0
// When using soft-float, these ops might be rewritten to function calls // When using soft-float, these ops might be rewritten to function calls
// so we ensure they are evaluated first. // so we ensure they are evaluated first.
case ir.OADD, ir.OSUB, ir.OMUL, ir.ONEG: case ir.OADD, ir.OSUB, ir.OMUL, ir.ONEG:
@ -318,7 +326,6 @@ func mayCall(n ir.Node) bool {
case ir.OLITERAL, ir.ONIL, ir.ONAME, ir.OLINKSYMOFFSET, ir.OMETHEXPR, case ir.OLITERAL, ir.ONIL, ir.ONAME, ir.OLINKSYMOFFSET, ir.OMETHEXPR,
ir.OAND, ir.OANDNOT, ir.OLSH, ir.OOR, ir.ORSH, ir.OXOR, ir.OCOMPLEX, ir.OEFACE, ir.OAND, ir.OANDNOT, ir.OLSH, ir.OOR, ir.ORSH, ir.OXOR, ir.OCOMPLEX, ir.OEFACE,
ir.OANDAND, ir.OOROR,
ir.OADDR, ir.OBITNOT, ir.ONOT, ir.OPLUS, ir.OADDR, ir.OBITNOT, ir.ONOT, ir.OPLUS,
ir.OCAP, ir.OIMAG, ir.OLEN, ir.OREAL, ir.OCAP, ir.OIMAG, ir.OLEN, ir.OREAL,
ir.OCONVNOP, ir.ODOT, ir.OCONVNOP, ir.ODOT,