1
0
mirror of https://github.com/golang/go synced 2024-11-22 23:50:03 -07:00

cmd/compile: call phiElimValue from removePhiArg

With the exception of the shortcircuit pass, removePhiArg is always unconditionally followed by phiElimValue.
Move the phiElimValue inside removePhiArg.

Resolves a TODO.

See CL 357964 for more info.

Change-Id: I8460b35864f4cd7301ba86fc3dce08ec8041da7f
Reviewed-on: https://go-review.googlesource.com/c/go/+/465435
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Jakub Ciolek <jakub@ciolek.dev>
This commit is contained in:
Jakub Ciolek 2023-02-06 07:18:53 +01:00 committed by Keith Randall
parent 51fe7062d3
commit d29dd2ecf7
4 changed files with 2 additions and 8 deletions

View File

@ -341,7 +341,7 @@ func (b *Block) swapSuccessors() {
// if v.Op != OpPhi {
// continue
// }
// b.removeArg(v, i)
// b.removePhiArg(v, i)
//
// }
func (b *Block) removePhiArg(phi *Value, i int) {
@ -353,6 +353,7 @@ func (b *Block) removePhiArg(phi *Value, i int) {
phi.Args[i] = phi.Args[n]
phi.Args[n] = nil
phi.Args = phi.Args[:n]
phielimValue(phi)
}
// LackingPos indicates whether b is a block whose position should be inherited

View File

@ -96,11 +96,6 @@ func critical(f *Func) {
// splitting occasionally leads to a phi having
// a single argument (occurs with -N)
// TODO(cuonglm,khr): replace this with phielimValue, and
// make removePhiArg incorporates that.
if len(b.Preds) == 1 {
phi.Op = OpCopy
}
// Don't increment i in this case because we moved
// an unprocessed predecessor down into slot i.
} else {

View File

@ -330,7 +330,6 @@ func (b *Block) removeEdge(i int) {
continue
}
c.removePhiArg(v, j)
phielimValue(v)
// Note: this is trickier than it looks. Replacing
// a Phi with a Copy can in general cause problems because
// Phi and Copy don't have exactly the same semantics.

View File

@ -82,7 +82,6 @@ func fuseBranchRedirect(f *Func) bool {
continue
}
b.removePhiArg(v, k)
phielimValue(v)
}
// Fix up child to have one more predecessor.
child.Preds = append(child.Preds, Edge{p, pk.i})