]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix build
authorKeith Randall <khr@golang.org>
Wed, 18 May 2016 20:28:48 +0000 (13:28 -0700)
committerKeith Randall <khr@golang.org>
Wed, 18 May 2016 20:44:00 +0000 (20:44 +0000)
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>
src/cmd/compile/internal/ssa/regalloc.go
test/fixedbugs/issue15277.go

index c05e9ade7791418d04e48e681b775cc010ee4dab..bd405225746e70bf9c06d3ca981f3a17cf29cf7a 100644 (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
index a3acc614bfc1ae19797afcfc3aa11e0d1affe56e..719c9a4f4a7aaedc4163ea1d27502e3b6f519bed 100644 (file)
@@ -3,6 +3,7 @@
 // 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