Repository navigation
[release/9.0-rc1] JIT: Remove implicit fallthrough assert in bool optimizer - #106542
Merged
carlossanlop merged 1 commit intoAug 16, 2024
Merged
Conversation
Contributor
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
Contributor
|
cc @dotnet/jit-contrib, @AndyAyersMS @jeffschwMSFT PTAL. Thanks! |
Contributor
|
We have a very short window for merging RC1 backports. Please send the email to Tactics requesting approval and get a code review sign-off from area owners ASAP. |
Contributor
|
@carlossanlop is it not enough to get approval from @jeffschwMSFT for RC1 backports (edit: answered offline)? ping @AndyAyersMS |
Member
|
all post snap changes require tactics approval |
carlossanlop
approved these changes
Aug 16, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #106492 to release/9.0-rc1
/cc @amanasifkhalid
Customer Impact
Recent refactors of the JIT's flowgraph implementation removed various invariants. The assert being removed by this fix enforces an invariant which no longer exists, and thus can fire for valid state. This failure was hit by Antigen, one of our fuzz test generators.
Regression
#97488 probably made this assert overzealous. That change removed logic maintaining the false target of a conditional basic block as its next block. This means it is now possible for a conditional block to be the last block in a method if both of its successors are behind it.
Testing
Triggering this assert required a pretty specific code pattern, such that a method would end with a loop with an exit condition that can be optimized, and flowgraph churn in earlier JIT phases would keep the conditional block at the end of the method. There isn't any new behavior to test here.
Risk
Low. The fix simply removes a debug assert to keep CI clean. Release builds were unaffected by this assert.