cmd/compile: remove gdata layer in slicesym

The previous change moved code around to create slicesym.
This change simplifies slicesym and its callsites
by accepting an int64 for lencap instead of a node,
and by removing all the calls to gdata.
It also stops modifying n,
which avoids the need to make a copy of it.

Passes toolstash-check.

Change-Id: I4d25454d11b4bb8941000244443e3c99eef4bdd0
Reviewed-on: https://go-review.googlesource.com/c/go/+/227550
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
Josh Bleecher Snyder 2020-04-08 13:51:25 -07:00
parent 7096b1700d
commit 0a18cbc2e6
2 changed files with 12 additions and 17 deletions

View file

@ -128,9 +128,7 @@ func (s *InitSchedule) staticcopy(l *Node, r *Node) bool {
case OSLICELIT:
// copy slice
a := s.inittemps[r]
n := l.copy()
slicesym(n, a, r.Right)
slicesym(l, a, r.Right.Int64())
return true
case OARRAYLIT, OSTRUCTLIT:
@ -221,9 +219,7 @@ func (s *InitSchedule) staticassign(l *Node, r *Node) bool {
ta := types.NewArray(r.Type.Elem(), bound)
a := staticname(ta)
s.inittemps[r] = a
n := l.copy()
slicesym(n, a, r.Right)
slicesym(l, a, bound)
// Fall through to init underlying array.
l = a
fallthrough
@ -600,11 +596,7 @@ func slicelit(ctxt initContext, n *Node, var_ *Node, init *Nodes) {
if !stataddr(&nam, var_) || nam.Class() != PEXTERN {
Fatalf("slicelit: %v", var_)
}
var v Node
v.Type = types.Types[TINT]
setintconst(&v, t.NumElem())
slicesym(&nam, vstat, &v)
slicesym(&nam, vstat, t.NumElem())
return
}