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:
parent
59ff93fe64
commit
e3027c6828
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user