return s
}
+func (s *regAllocState) RegMaskString(m regMask) string {
+ str := ""
+ for r := register(0); m != 0; r++ {
+ if m>>r&1 == 0 {
+ continue
+ }
+ m &^= regMask(1) << r
+ if str != "" {
+ str += " "
+ }
+ str += s.registers[r].String()
+ }
+ return str
+}
+
// countRegs returns the number of set bits in the register mask.
func countRegs(r regMask) int {
n := 0
}
}
if s.f.pass.debug > regDebug {
- fmt.Printf("uses for %s:%s\n", s.f.Name, b)
+ fmt.Printf("use distances for %s\n", b)
for i := range s.values {
vi := &s.values[i]
u := vi.uses
fmt.Printf("]")
}
}
- fmt.Printf(" avoid=%x", int64(s.desired[b.ID].avoid))
+ if avoid := s.desired[b.ID].avoid; avoid != 0 {
+ fmt.Printf(" avoid=%v", s.RegMaskString(avoid))
+ }
fmt.Println()
}
}