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>
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
// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build amd64
package main