Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LSRA: Improve spill placement #6825

Open
sivarv opened this issue Oct 17, 2016 · 1 comment
Open

LSRA: Improve spill placement #6825

sivarv opened this issue Oct 17, 2016 · 1 comment
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI enhancement Product code improvement that does NOT require public API changes/additions optimization tenet-performance Performance related issue
Milestone

Comments

@sivarv
Copy link
Member

sivarv commented Oct 17, 2016

Currently an interval is always spilled at the most recent RefLocation, without looking for a better location to spill (e.g. possibly a post-dominating block that is likely to be less frequently executed).

When we spill a variable in a register, we always do so at its most recent reference. However, if we are now allocating for a different block, it may be cheaper to spill it at the top of the current block, or even one in-between which dominates this block (and which may be lower cost). This can be done by setting the incoming location to REG_STK (on the spill block and all intervening blocks, if any, between there and the current block). This is likely to require some tuning, and may require some additional machinery.

category:cq
theme:register-allocator
skill-level:expert
cost:large
impact:medium

@sivarv sivarv self-assigned this Oct 17, 2016
@sivarv
Copy link
Member Author

sivarv commented Mar 9, 2017

This work item is related to pushing spills to low cost basic blocks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI enhancement Product code improvement that does NOT require public API changes/additions optimization tenet-performance Performance related issue
Projects
None yet
Development

No branches or pull requests

4 participants