// A slot is live if it was seen in all predecessors, and they all had
// some storage in common.
- for slotID := range p0 {
- slotLoc := slotLocs[slotID]
+ for _, predSlot := range p0 {
+ slotLoc := slotLocs[predSlot.slot]
- if state.liveCount[slotID] != len(preds) {
+ if state.liveCount[predSlot.slot] != len(preds) {
// Seen in only some predecessors. Clear it out.
- slotLocs[slotID] = VarLoc{}
+ slotLocs[predSlot.slot] = VarLoc{}
continue
}
reg := uint8(TrailingZeros64(mask))
mask &^= 1 << reg
- state.currentState.registers[reg] = append(state.currentState.registers[reg], SlotID(slotID))
+ state.currentState.registers[reg] = append(state.currentState.registers[reg], predSlot.slot)
}
}
return nil, false