when i use the liveInterval anlaysis pass.
I have checked the follwing code:
/// The default distance between instructions as returned by distance().
/// This may vary as instructions are inserted and removed.
InstrDist = 4 * Slot_Count
why this design?
I don’t know, but I think this should be increased
There was a previous discussion about this here: Odd behavior in SlotIndex::getInstrDistance()
IIRC, slot indexes are assigned in increments of 4. This is so that inserting an instruction doesn’t require immediate re-indexing.
@zhou3968322 Why do you care about the distance?
This should be an implementation detail.
Why? Do you see a lot of time spent in renumbering? Intuitively I wouldn’t expect it to be that common for regalloc and other passes to insert more than 3 new instructions between two instructions from earlier passes…
This happens all the time when you have 32 element register tuples
Shouldn’t be a big deal to increase it. Though we probably have to be a bit careful as SlotIndexes are only
unsigned (aka 32bits) and I see no code even checking for overflows right now…
I’m just curious about this design.
1/4 might be a number that is sparse enough but also keeps the slot relatively dense.