mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: insertVarPhis micro-optimization
Algorithmic improvements here are hard. Lifting a lookup out of the loop helps a little, though. To compile the code in #17926: name old s/op new s/op delta Real 146 ± 3% 140 ± 4% -3.87% (p=0.002 n=10+10) User 143 ± 3% 139 ± 4% -3.08% (p=0.005 n=10+10) Sys 8.28 ±35% 8.08 ±28% ~ (p=0.684 n=10+10) Updates #17926. Change-Id: Ic255ac8b7b409c1a53791058818b7e2cf574abe3 Reviewed-on: https://go-review.googlesource.com/33305 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
302474c61c
commit
1cbc5aa529
1 changed files with 2 additions and 1 deletions
|
|
@ -224,10 +224,11 @@ func (s *phiState) insertVarPhis(n int, var_ *Node, defs []*ssa.Block, typ ssa.T
|
|||
fmt.Printf(" processing %s\n", b)
|
||||
}
|
||||
|
||||
currentRootLevel := s.level[currentRoot.ID]
|
||||
for _, e := range b.Succs {
|
||||
c := e.Block()
|
||||
// TODO: if the variable is dead at c, skip it.
|
||||
if s.level[c.ID] > s.level[currentRoot.ID] {
|
||||
if s.level[c.ID] > currentRootLevel {
|
||||
// a D-edge, or an edge whose target is in currentRoot's subtree.
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue