Much of LSRA work involves dealing with sets of vars that are live at block boundaries.
We could improve efficiency by ensuring that those sets are dense, and using a smaller set.
We would only need a larger set for the liveness set that's used during traversals.
This could be beneficial if 1) there are a large number of vars that are only live within a single block, and 2) the cost of the extra sorting and updating of the "current" copy of live vars doesn't adversely impact throughput.
Also, it may be possible to reuse tracked numbers for different basic blocks, to keep the sets small. The Intervals could still be different for the different lclNums with the same BB-local tracked var number.
category:throughput
theme:register-allocator
skill-level:expert
cost:large
Much of LSRA work involves dealing with sets of vars that are live at block boundaries.
We could improve efficiency by ensuring that those sets are dense, and using a smaller set.
We would only need a larger set for the liveness set that's used during traversals.
This could be beneficial if 1) there are a large number of vars that are only live within a single block, and 2) the cost of the extra sorting and updating of the "current" copy of live vars doesn't adversely impact throughput.
Also, it may be possible to reuse tracked numbers for different basic blocks, to keep the sets small. The Intervals could still be different for the different lclNums with the same BB-local tracked var number.
category:throughput
theme:register-allocator
skill-level:expert
cost:large