-
Notifications
You must be signed in to change notification settings - Fork 5.3k
JIT: Push initial defs and create initial def VNs for all tracked locals #105921
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
Conversation
|
FYI @dotnet/jit-contrib |
|
I wonder if at some point VN dead stores could supplant the redundant zero inits phase.... |
|
This (presumably) obsoletes this workaround: runtime/src/coreclr/jit/liveness.cpp Lines 1194 to 1214 in ab03e0f
|
|
/azp run runtime-coreclr jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Ah, that likely explains why the issue in #105667 wasn't more widespread -- partial defs by calls were bypassed in this special liveness update. So we could extend that handling to cover calls too, as an alternative (and perhaps less risky) fix. |
Are you planning to change to handle it there? |
Seems like a more surgical fix, so yeah let me do that. We can consider this change for .NET 10. |
|
Going to hold off on this for now... |
|
Closing for now, may want to revisit in .NET 11. |
Have SSA create initial SSA defs for all locals instead of just the live subset (most of the time these will end up being unused). Have VN give these initial SSA defs suitable initial value numbers.
This fixes the "missing ssa def" issue seen in #105667 (where the only use of a local is an USEASG which does not make the use live) and also allows for a bit more VN based dead stores.
We could claw back some of the TP by only creating these unused things on demand.
Fixes #105667.