dotnet / dotnet/runtime

JIT: We should try to maintain full defs through async liveness

Open
#133,415 2 comments 0 reactions 0 assignees View on GitHub
area-CodeGen-coreclr
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.