cmd/compile: fix build

Run live vars test only on ssa builds.
We can't just drop KeepAlive ops during regalloc.  We need
to replace them with copies.

Change-Id: Ib4b3b1381415db88fdc2165fc0a9541b73ad9759
Reviewed-on: https://go-review.googlesource.com/23225
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Keith Randall 2016-05-18 13:28:48 -07:00
parent 6ab45c09f6
commit 075880a8e8
2 changed files with 4 additions and 2 deletions

View file

@ -948,13 +948,14 @@ func (s *regAllocState) regalloc(f *Func) {
if vi.spillUsed {
// Use the spill location.
v.SetArg(0, vi.spill)
b.Values = append(b.Values, v)
} else {
// No need to keep unspilled values live.
// These are typically rematerializeable constants like nil,
// or values of a variable that were modified since the last call.
v.Args[0].Uses--
v.Op = OpCopy
v.SetArgs1(v.Args[1])
}
b.Values = append(b.Values, v)
continue
}
regspec := opcodeTable[v.Op].reg