JIT: Include more edges in BlockDominancePreds#110531
Merged
jakobbotsch merged 5 commits intodotnet:mainfrom Dec 10, 2024
Merged
JIT: Include more edges in BlockDominancePreds#110531jakobbotsch merged 5 commits intodotnet:mainfrom
BlockDominancePreds#110531jakobbotsch merged 5 commits intodotnet:mainfrom
Conversation
Because of spurious flow it is possible that the preds of the try-begin block are not the only blocks that can dominate a handler. We handled this possibility, but only for finally/fault blocks that can directly have these edges. However, even other handler blocks can be reachable through spurious paths that involves finally/fault blocks, and in these cases returning the preds of the try-begin block is not enough to compute the right dominator statically.
Member
Author
|
cc @dotnet/jit-contrib PTAL @AndyAyersMS No codegen diffs. Some TP regressions since we are now spending a lot more effort to compute the dominator of handlers ( |
AndyAyersMS
approved these changes
Dec 9, 2024
Member
AndyAyersMS
left a comment
There was a problem hiding this comment.
Two pass EH strikes again.
This was referenced Dec 9, 2024
Open
Member
Author
|
/backport to release/9.0-staging |
Contributor
|
Started backporting to release/9.0-staging: https://github.com/dotnet/runtime/actions/runs/12254343358 |
Merged
4 tasks
hez2010
pushed a commit
to hez2010/runtime
that referenced
this pull request
Dec 14, 2024
Because of spurious flow it is possible that the preds of the try-begin block are not the only blocks that can dominate a handler. We handled this possibility, but only for finally/fault blocks that can directly have these edges. However, even other handler blocks can be reachable through spurious paths that involves finally/fault blocks, and in these cases returning the preds of the try-begin block is not enough to compute the right dominator statically.
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.
Because of spurious flow it is possible that the preds of the try-begin
block are not the only blocks that can dominate a handler. We handled
this possibility, but only for finally/fault blocks that can directly
have these edges. However, even other handler blocks can be reachable
through spurious paths that involves finally/fault blocks, and in these
cases returning the preds of the try-begin block is not enough to
compute the right dominator statically.
Fix the problem by considering the dominance preds to be all preds of
handler, in addition to the try-enter blocks.
Fix #109981