]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: remove tempAssigns in walkCall1
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 21 Jan 2021 05:08:46 +0000 (12:08 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 21 Jan 2021 06:40:06 +0000 (06:40 +0000)
Passes toolstash -cmp.

Change-Id: I588c663324443e02b901cda461b999ff192e150c
Reviewed-on: https://go-review.googlesource.com/c/go/+/284896
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/walk/expr.go

index bc4ae23759cfc3a2213bd385e2758f0929542825..d7a20206c89f0aa8950cfd5b9aea4b7949a0537c 100644 (file)
@@ -521,10 +521,6 @@ func walkCall1(n *ir.CallExpr, init *ir.Nodes) {
        n.X = walkExpr(n.X, init)
        walkExprList(args, init)
 
-       // For any argument whose evaluation might require a function call,
-       // store that argument into a temporary variable,
-       // to prevent that calls from clobbering arguments already on the stack.
-       var tempAssigns []ir.Node
        for i, arg := range args {
                // Validate argument and parameter types match.
                param := params.Field(i)
@@ -532,17 +528,18 @@ func walkCall1(n *ir.CallExpr, init *ir.Nodes) {
                        base.FatalfAt(n.Pos(), "assigning %L to parameter %v (type %v)", arg, param.Sym, param.Type)
                }
 
+               // For any argument whose evaluation might require a function call,
+               // store that argument into a temporary variable,
+               // to prevent that calls from clobbering arguments already on the stack.
                if mayCall(arg) {
                        // assignment of arg to Temp
                        tmp := typecheck.Temp(param.Type)
-                       a := convas(typecheck.Stmt(ir.NewAssignStmt(base.Pos, tmp, arg)).(*ir.AssignStmt), init)
-                       tempAssigns = append(tempAssigns, a)
+                       init.Append(convas(typecheck.Stmt(ir.NewAssignStmt(base.Pos, tmp, arg)).(*ir.AssignStmt), init))
                        // replace arg with temp
                        args[i] = tmp
                }
        }
 
-       init.Append(tempAssigns...)
        n.Args = args
 }