mirror of
https://github.com/golang/go
synced 2024-10-05 16:41:21 -06:00
[dev.ssa] cmd/compile: enforce that all phis are first during regalloc
Change-Id: I035708f5d0659b3deef00808d35e1cc8a80215e0 Reviewed-on: https://go-review.googlesource.com/13243 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
f1401f1a10
commit
ddeee0eed3
@ -394,11 +394,16 @@ func regalloc(f *Func) {
|
||||
// immediately preceding the phi's block.
|
||||
func addPhiCopies(f *Func) {
|
||||
for _, b := range f.Blocks {
|
||||
phis := true // all phis should appear first; confirm that as we go
|
||||
for _, v := range b.Values {
|
||||
if v.Op != OpPhi {
|
||||
break // all phis should appear first
|
||||
}
|
||||
if v.Type.IsMemory() { // TODO: only "regallocable" types
|
||||
switch {
|
||||
case v.Op == OpPhi && !phis:
|
||||
f.Fatalf("phi var %v not at beginning of block %v:\n%s\n", v, v.Block, f)
|
||||
break
|
||||
case v.Op != OpPhi:
|
||||
phis = false
|
||||
continue
|
||||
case v.Type.IsMemory(): // TODO: only "regallocable" types
|
||||
continue
|
||||
}
|
||||
for i, w := range v.Args {
|
||||
|
Loading…
Reference in New Issue
Block a user