-
Notifications
You must be signed in to change notification settings - Fork 5.1k
[release/8.0 staging] Port fix for 103477 to 8.0 #103918
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
[release/8.0 staging] Port fix for 103477 to 8.0 #103918
Conversation
"Port" the changes from dotnet#103788 to .NET 8. We don't have the DFS tree, so enhance the topological sort that SSA uses to detect cycles and backedges. Use this info to stop searching for redundant zero inits once flow from entry has entered a cycle. Fixes dotnet#103477 (for .NET 8).
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
@dotnet/jit-contrib PTAL |
@mangod9 since Jeff is OOF perhaps you and Julie can co-approve? |
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.
lgtm. please send email to tactics for approval
@AndyAyersMS friendly reminder that code complete for the August Release is July 15th. If you want this fix to be included in that release, please merge this PR before that date. |
Friendly reminder that Monday July 15th is Code Complete day, that's the deadline to get this included in the August Release. |
Thanks for the remainders! |
524fdcf
into
dotnet:release/8.0-staging
"Port" the changes from #103788 to .NET 8.
We don't have the DFS tree, so enhance the topological sort that SSA uses to detect cycles and backedges.
Use this info to stop searching for redundant zero inits once flow from entry has entered a cycle.
Fixes #103477 (for .NET 8).
Customer Impact
In #103477 the customer reported silent bad code where a necessary zero initialization was removed via JIT optimization.
Regression
The issue was introduced in .NET 8
Testing
Verified repro (with jitted code) now passes; added test case. SPMI runs show we now keep a small number of other zero initializations that were previously (correctly) deemed redundant.
Risk
Low. This is making an optimization more conservative.