JIT: We should try to maintain full defs through async liveness
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
When we decompose stores physical promotion will often end up introducing STORE_LCL_FLDs if the destination was not fully promoted. Unfortunately these often result in async liveness thinking that the stores are partial, even though the full set is actually a full definition. This can then lead to unnecessary state being retained.
To fixes I can think of:
- Try to make async liveness more precise and track per-field state
- Instead of creating a set of `STORE_LCL_FLD` on decomposition, instead create `STORE_LCL_VAR(FIELD_LIST(...))` and then expand it in lowering.
I am partial to (2), it seems simpler.
Contributor guide
Research direction
No files or tests are named. Start by tracing JIT store decomposition, async liveness, and lowering to determine where STORE_LCL_FLDs are produced and interpreted; done means full definitions remain recognized as full and unnecessary state is no longer retained.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- compilers, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100