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>
diff --git a/src/cmd/compile/internal/gc/order.go b/src/cmd/compile/internal/gc/order.go
index 176d7a3..0e28f82 100644
--- a/src/cmd/compile/internal/gc/order.go
+++ b/src/cmd/compile/internal/gc/order.go
@@ -513,26 +513,6 @@
 		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 @@
 		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 @@
 		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()