mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: cache CFG-dependent computations
We compute a lot of stuff based off the CFG: postorder traversal, dominators, dominator tree, loop nest. Multiple phases use this information and we end up recomputing some of it. Add a cache for this information so if the CFG hasn't changed, we can reuse the previous computation. Change-Id: I9b5b58af06830bd120afbee9cfab395a0a2f74b2 Reviewed-on: https://go-review.googlesource.com/29356 Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
2679282da4
commit
75ce89c20d
18 changed files with 83 additions and 59 deletions
|
|
@ -35,7 +35,6 @@ func benchFnPass(b *testing.B, fn passFunc, size int, bg blockGen) {
|
|||
b.ReportAllocs()
|
||||
c := NewConfig("amd64", DummyFrontend{b}, nil, true)
|
||||
fun := Fun(c, "entry", bg(size)...)
|
||||
domTree(fun.f)
|
||||
CheckFunc(fun.f)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
|
|
@ -51,7 +50,6 @@ func benchFnBlock(b *testing.B, fn passFunc, bg blockGen) {
|
|||
b.ReportAllocs()
|
||||
c := NewConfig("amd64", DummyFrontend{b}, nil, true)
|
||||
fun := Fun(c, "entry", bg(b.N)...)
|
||||
domTree(fun.f)
|
||||
CheckFunc(fun.f)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < passCount; i++ {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue