diff --git a/src/cmd/compile/internal/gc/sinit.go b/src/cmd/compile/internal/gc/sinit.go index e073a5fad4e49d..814e837d596e48 100644 --- a/src/cmd/compile/internal/gc/sinit.go +++ b/src/cmd/compile/internal/gc/sinit.go @@ -860,9 +860,7 @@ func slicelit(ctxt int, n *Node, var_ *Node, init *Nodes) { init.Append(a) } -func maplit(ctxt int, n *Node, m *Node, init *Nodes) { - ctxt = 0 - +func maplit(n *Node, m *Node, init *Nodes) { // make the map var nerr := nerrors @@ -894,8 +892,8 @@ func maplit(ctxt int, n *Node, m *Node, init *Nodes) { dowidth(tv) // make and initialize static arrays - vstatk := staticname(tk, ctxt) - vstatv := staticname(tv, ctxt) + vstatk := staticname(tk, 0) + vstatv := staticname(tv, 0) b := int64(0) for _, r := range n.List.Slice() { @@ -1007,7 +1005,7 @@ func maplit(ctxt int, n *Node, m *Node, init *Nodes) { } } -func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) { +func anylit(n *Node, var_ *Node, init *Nodes) { t := n.Type switch n.Op { default: @@ -1037,7 +1035,7 @@ func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) { var_ = Nod(OIND, var_, nil) var_ = typecheck(var_, Erv|Easgn) - anylit(ctxt, n.Left, var_, init) + anylit(n.Left, var_, init) case OSTRUCTLIT: if !t.IsStruct() { @@ -1045,27 +1043,21 @@ func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) { } if var_.isSimpleName() && n.List.Len() > 4 { - if ctxt == 0 { - // lay out static data - vstat := staticname(t, ctxt) - - structlit(ctxt, 1, n, vstat, init) + // lay out static data + vstat := staticname(t, 0) - // copy static to var - a := Nod(OAS, var_, vstat) + structlit(0, 1, n, vstat, init) - a = typecheck(a, Etop) - a = walkexpr(a, init) - init.Append(a) + // copy static to var + a := Nod(OAS, var_, vstat) - // add expressions to automatic - structlit(ctxt, 2, n, var_, init) + a = typecheck(a, Etop) + a = walkexpr(a, init) + init.Append(a) - break - } + // add expressions to automatic + structlit(0, 2, n, var_, init) - structlit(ctxt, 1, n, var_, init) - structlit(ctxt, 2, n, var_, init) break } @@ -1077,11 +1069,11 @@ func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) { init.Append(a) } - structlit(ctxt, 3, n, var_, init) + structlit(0, 3, n, var_, init) case OARRAYLIT: if t.IsSlice() { - slicelit(ctxt, n, var_, init) + slicelit(0, n, var_, init) break } if !t.IsArray() { @@ -1089,27 +1081,20 @@ func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) { } if var_.isSimpleName() && n.List.Len() > 4 { - if ctxt == 0 { - // lay out static data - vstat := staticname(t, ctxt) - - arraylit(1, 1, n, vstat, init) + // lay out static data + vstat := staticname(t, 0) - // copy static to automatic - a := Nod(OAS, var_, vstat) + arraylit(1, 1, n, vstat, init) - a = typecheck(a, Etop) - a = walkexpr(a, init) - init.Append(a) - - // add expressions to automatic - arraylit(ctxt, 2, n, var_, init) + // copy static to automatic + a := Nod(OAS, var_, vstat) + a = typecheck(a, Etop) + a = walkexpr(a, init) + init.Append(a) - break - } + // add expressions to automatic + arraylit(0, 2, n, var_, init) - arraylit(ctxt, 1, n, var_, init) - arraylit(ctxt, 2, n, var_, init) break } @@ -1121,13 +1106,13 @@ func anylit(ctxt int, n *Node, var_ *Node, init *Nodes) { init.Append(a) } - arraylit(ctxt, 3, n, var_, init) + arraylit(0, 3, n, var_, init) case OMAPLIT: if !t.IsMap() { Fatalf("anylit: not map") } - maplit(ctxt, n, var_, init) + maplit(n, var_, init) } } @@ -1149,14 +1134,6 @@ func oaslit(n *Node, init *Nodes) bool { return false } - // context is init() function. - // implies generated data executed - // exactly once and not subject to races. - ctxt := 0 - - // if(n->dodata == 1) - // ctxt = 1; - switch n.Right.Op { default: // not a special composit literal assignment @@ -1167,7 +1144,7 @@ func oaslit(n *Node, init *Nodes) bool { // not a special composit literal assignment return false } - anylit(ctxt, n.Right, n.Left, init) + anylit(n.Right, n.Left, init) } n.Op = OEMPTY diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go index 91895dd8afba41..a51defb03edf61 100644 --- a/src/cmd/compile/internal/gc/walk.go +++ b/src/cmd/compile/internal/gc/walk.go @@ -1647,7 +1647,7 @@ opswitch: break } var_ := temp(n.Type) - anylit(0, n, var_, init) + anylit(n, var_, init) n = var_ case OSEND: