]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.unified] cmd/compile/internal/walk: minor prep refactoring
authorMatthew Dempsky <mdempsky@google.com>
Tue, 14 Jun 2022 22:34:05 +0000 (15:34 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 21 Jun 2022 17:49:09 +0000 (17:49 +0000)
Two small refactorings that will make it easier to thread through
RType parameters later. Behavior preserving, but seemed worth
separating out.

Passes toolstash -cmp.

Change-Id: I77905775015b6582bad2b32dd7700880c415893f
Reviewed-on: https://go-review.googlesource.com/c/go/+/413354
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/compile/internal/walk/complit.go
src/cmd/compile/internal/walk/range.go

index 595fe8538caec6596c7b400d61ce58719c21d5b9..46744a7130ced1497fa129a7e517d7d3bca75c7b 100644 (file)
@@ -414,9 +414,9 @@ func slicelit(ctxt initContext, n *ir.CompLitExpr, var_ ir.Node, init *ir.Nodes)
 
 func maplit(n *ir.CompLitExpr, m ir.Node, init *ir.Nodes) {
        // make the map var
-       a := ir.NewCallExpr(base.Pos, ir.OMAKE, nil, nil)
+       args := []ir.Node{ir.TypeNode(n.Type()), ir.NewInt(n.Len + int64(len(n.List)))}
+       a := typecheck.Expr(ir.NewCallExpr(base.Pos, ir.OMAKE, nil, args)).(*ir.MakeExpr)
        a.SetEsc(n.Esc())
-       a.Args = []ir.Node{ir.TypeNode(n.Type()), ir.NewInt(n.Len + int64(len(n.List)))}
        appendWalkStmt(init, ir.NewAssignStmt(base.Pos, m, a))
 
        entries := n.List
index 6c30fa2877216f75b74529b4f423b843f0f2d79b..48155a817c9e959d2d806c3a3fe3dba575d0a5a8 100644 (file)
@@ -38,11 +38,7 @@ func cheapComputableIndex(width int64) bool {
 // the returned node.
 func walkRange(nrange *ir.RangeStmt) ir.Node {
        if isMapClear(nrange) {
-               m := nrange.X
-               lno := ir.SetPos(m)
-               n := mapClear(m)
-               base.Pos = lno
-               return n
+               return mapClear(nrange)
        }
 
        nfor := ir.NewForStmt(nrange.Pos(), nil, nil, nil, nil)
@@ -360,7 +356,11 @@ func isMapClear(n *ir.RangeStmt) bool {
 }
 
 // mapClear constructs a call to runtime.mapclear for the map m.
-func mapClear(m ir.Node) ir.Node {
+func mapClear(nrange *ir.RangeStmt) ir.Node {
+       m := nrange.X
+       origPos := ir.SetPos(m)
+       defer func() { base.Pos = origPos }()
+
        t := m.Type()
 
        // instantiate mapclear(typ *type, hmap map[any]any)