Flagalloc was recalculating flags is some situations
when it didn't need to. Fixed by using the same name
for the original flag calculation instruction throughout.
Change-Id: Ic0bf58f728a8d87748434dd25a67b0708755e1f8
Reviewed-on: https://go-review.googlesource.com/19237
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: David Chase <drchase@google.com>
for _, b := range f.Blocks {
oldSched = append(oldSched[:0], b.Values...)
b.Values = b.Values[:0]
- // The current live flag value.
+ // The current live flag value the pre-flagalloc copy).
var flag *Value
if len(b.Preds) > 0 {
flag = end[b.Preds[0].ID]
// Update v.
v.SetArg(i, c)
// Remember the most-recently computed flag value.
- flag = c
+ flag = a
}
// Issue v.
b.Values = append(b.Values, v)
// Recalculate control value.
c := v.copyInto(b)
b.Control = c
- flag = c
+ flag = v
}
if v := end[b.ID]; v != nil && v != flag {
// Need to reissue flag generator for use by