mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.regabi] cmd/compile: remove prealloc map
The prealloc map seems to exist to avoid adding a field to all nodes. Now we can add a field to just the nodes that need the field, so let's do that and avoid having a magic global with extra node state that isn't preserved by operations like Copy nor printed by Dump. This also makes clear which nodes can be prealloc'ed. In particular, the code in walkstmt looked up an entry in prealloc using an ONAME node, but there's no code that ever stores such an entry, so the lookup never succeeded. Having fields makes that kind of thing easier to see and fix. Passes buildall w/ toolstash -cmp. Change-Id: I418ad0e2847615c08868120c13ee719dc0b2eacb Reviewed-on: https://go-review.googlesource.com/c/go/+/278915 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
ffb0cb7044
commit
c45313bf45
7 changed files with 33 additions and 34 deletions
|
|
@ -668,7 +668,7 @@ func slicelit(ctxt initContext, n *ir.CompLitExpr, var_ ir.Node, init *ir.Nodes)
|
|||
|
||||
// set auto to point at new temp or heap (3 assign)
|
||||
var a ir.Node
|
||||
if x := prealloc[n]; x != nil {
|
||||
if x := n.Prealloc; x != nil {
|
||||
// temp allocated during order.go for dddarg
|
||||
if !types.Identical(t, x.Type()) {
|
||||
panic("dotdotdot base type does not match order's assigned type")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue