Skip to content

Commit

Permalink
cmd/compile/internal/ssa: simplify NewFunc API
Browse files Browse the repository at this point in the history
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 <[email protected]>
LUCI-TryBot-Result: Go LUCI <[email protected]>
Reviewed-by: Keith Randall <[email protected]>
Reviewed-by: Keith Randall <[email protected]>
  • Loading branch information
mdempsky authored and gopherbot committed Sep 8, 2023
1 parent 729e21b commit 9c9fcab
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
14 changes: 11 additions & 3 deletions src/cmd/compile/internal/ssa/func.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 1 addition & 3 deletions src/cmd/compile/internal/ssa/func_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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}})

Expand Down
8 changes: 4 additions & 4 deletions src/cmd/compile/internal/ssagen/ssa.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 9c9fcab

Please sign in to comment.