Spill for VReg lifetimes instead of SpillSet lifetimes #171
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR removes the redundant move eliminator by changing where we store spill allocations: switching from allocating spills to bundles to instead spilling vregs for their full lifetime. Changes to the cranelift test suite are for the most part positive, though there are some cases where the number of stack slots grows as a result of the new spilling strategy. I think that this could probably be mitigated by revisiting how we compute spill weight, but would also like to see what the change to more substantial targets like spidermonkey are before committing to that.
The change consists of three parts:
I've fuzzed this for about 24 hours without discovering any new test failures, but I think it's a pretty substantial change that warrants more discussion once @cfallin is back.