1
0
mirror of https://github.com/golang/go synced 2024-11-18 06:54:49 -07:00

cmd/compile: move OAS2 to its own case in order

Change-Id: Id0f4955588ae8027a24465b456c90d0543d60db2
Reviewed-on: https://go-review.googlesource.com/c/go/+/200581
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
Cuong Manh Le 2019-10-12 08:47:51 +07:00 committed by Matthew Dempsky
parent ba6aeb6ce8
commit e79c23822c

View File

@ -513,26 +513,6 @@ func (o *Order) stmt(n *Node) {
o.mapAssign(n)
o.cleanTemp(t)
case OAS2,
OCLOSE,
OCOPY,
OPRINT,
OPRINTN,
ORECOVER,
ORECV:
t := o.markTemp()
n.Left = o.expr(n.Left, nil)
n.Right = o.expr(n.Right, nil)
o.exprList(n.List)
o.exprList(n.Rlist)
switch n.Op {
case OAS2:
o.mapAssign(n)
default:
o.out = append(o.out, n)
}
o.cleanTemp(t)
case OASOP:
t := o.markTemp()
n.Left = o.expr(n.Left, nil)
@ -562,6 +542,13 @@ func (o *Order) stmt(n *Node) {
o.mapAssign(n)
o.cleanTemp(t)
case OAS2:
t := o.markTemp()
o.exprList(n.List)
o.exprList(n.Rlist)
o.mapAssign(n)
o.cleanTemp(t)
// Special: avoid copy of func call n.Right
case OAS2FUNC:
t := o.markTemp()
@ -620,6 +607,20 @@ func (o *Order) stmt(n *Node) {
o.out = append(o.out, n)
o.cleanTemp(t)
case OCLOSE,
OCOPY,
OPRINT,
OPRINTN,
ORECOVER,
ORECV:
t := o.markTemp()
n.Left = o.expr(n.Left, nil)
n.Right = o.expr(n.Right, nil)
o.exprList(n.List)
o.exprList(n.Rlist)
o.out = append(o.out, n)
o.cleanTemp(t)
// Special: order arguments to inner call but not call itself.
case ODEFER, OGO:
t := o.markTemp()