-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Support deleting "entire" stores in the VN-based dead store removal phase #79505
Support deleting "entire" stores in the VN-based dead store removal phase #79505
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsIn the initial change, I reverted the bits needed to make this work, since it did not seem worthwhile. Since then, I came across a scenario which this helps: removing zero-initis of tracked structs that codegen is guaranteed to make "must-init", hence this improvement. Minor positive diffs are expected, with minor TP impact as well.
|
36f070b
to
4bffcfb
Compare
4bffcfb
to
db187d2
Compare
@dotnet/jit-contrib |
/azp run runtime-coreclr superpmi-diffs, runtime-coreclr superpmi-replay, runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn |
Azure Pipelines successfully started running 5 pipeline(s). |
|
Is my understanding correct that we model the implicit zero init as an SSA def (that we end up getting via |
Yes, that is correct.
Liveness does not model this "implicit zero-init", so it would not remove explicit inits based on it. It is why we have a whole separate phase dedicated just to this ( Edit: but |
Right, that's what I meant with "otherwise" -- I assume the "whole" case is otherwise often handled by liveness (when the explicit IR is there). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me, but would like to get @AndyAyersMS's review too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At some point it would be good to think about how to update SSA, but since this opt runs last in the opt phases I suppose it doesn't matter today.
In the initial change, I reverted the bits needed to make this work, since it did not seem worthwhile. Since then, I came across a scenario which this helps: removing zero-initis of tracked structs that codegen is guaranteed to make "must-init", hence this improvement.
Minor positive diffs, with minor TP impact as well (payed for with the recent
ADDR
-related changes).