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). |
jakobbotsch
left a comment
There was a problem hiding this comment.
This looks good to me, but would like to get @AndyAyersMS's review too.
AndyAyersMS
left a comment
There was a problem hiding this comment.
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).