cmd/compile/internal/ssa: simplify NewFunc API

Add Config and Cache as params rather than documenting that the caller
has to set them manually.

Change-Id: I8d530be695a0c94bcc4211b496d6e57ec2fff029
Reviewed-on: https://go-review.googlesource.com/c/go/+/526515
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
Matthew Dempsky 2023-09-06 21:43:58 -07:00 committed by Gopher Robot
parent 729e21b24c
commit 9c9fcabb02
3 changed files with 16 additions and 10 deletions

View File

@ -84,9 +84,17 @@ type LocalSlotSplitKey struct {
}
// NewFunc returns a new, empty function object.
// Caller must set f.Config and f.Cache before using f.
func NewFunc(fe Frontend) *Func {
return &Func{fe: fe, NamedValues: make(map[LocalSlot][]*Value), CanonicalLocalSlots: make(map[LocalSlot]*LocalSlot), CanonicalLocalSplits: make(map[LocalSlotSplitKey]*LocalSlot)}
// Caller must reset cache before calling NewFunc.
func (c *Config) NewFunc(fe Frontend, cache *Cache) *Func {
return &Func{
fe: fe,
Config: c,
Cache: cache,
NamedValues: make(map[LocalSlot][]*Value),
CanonicalLocalSlots: make(map[LocalSlot]*LocalSlot),
CanonicalLocalSplits: make(map[LocalSlotSplitKey]*LocalSlot),
}
}
// NumBlocks returns an integer larger than the id of any Block in the Func.

View File

@ -152,12 +152,10 @@ func AuxCallLSym(name string) *AuxCall {
// supplied to one of the Bloc functions. Each of the bloc names and
// valu names should be unique across the Fun.
func (c *Conf) Fun(entry string, blocs ...bloc) fun {
f := NewFunc(c.Frontend())
f.Config = c.config
// TODO: Either mark some SSA tests as t.Parallel,
// or set up a shared Cache and Reset it between tests.
// But not both.
f.Cache = new(Cache)
f := c.config.NewFunc(c.Frontend(), new(Cache))
f.pass = &emptyPass
f.cachedLineStarts = newXposmap(map[int]lineRange{0: {0, 100}, 1: {0, 100}, 2: {0, 100}, 3: {0, 100}, 4: {0, 100}})

View File

@ -344,12 +344,12 @@ func buildssa(fn *ir.Func, worker int) *ssa.Func {
}
s.curfn = fn
s.f = ssa.NewFunc(&fe)
cache := &ssaCaches[worker]
cache.Reset()
s.f = ssaConfig.NewFunc(&fe, cache)
s.config = ssaConfig
s.f.Type = fn.Type()
s.f.Config = ssaConfig
s.f.Cache = &ssaCaches[worker]
s.f.Cache.Reset()
s.f.Name = name
s.f.PrintOrHtmlSSA = printssa
if fn.Pragma&ir.Nosplit != 0 {