1
0
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:
Josh Bleecher Snyder 2015-08-05 11:01:59 -07:00
parent f1401f1a10
commit ddeee0eed3

View File

@ -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 {