Don't call fgMorphBlockStmt in LoopClonning #113558
Merged
+17
−70
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.
Don't call
fgMorphBlockStmt
in loop clonning - morph might alter control flow (e.g. change BBJ_TRUE to BBJ_ALWAYS) and loop cloning doesn't expect that when it wires up blocks. It never happens today (we're lucky), but might be needed for Loop clonning for Spans (e.g. to foldlocalRef != null
condition). Actually, we might hit it (in theory) for stack-allocated arrays as well 🤔Also, I've removed the unreachable "multiple-conditions per block" code (it's when we merge multiple conditions into a single JTRUE with
GT_AND
) - I don't think we'll ever need it as the conditions that it creates are unfriendly for assertion propagation. It is more of a task for the lateifConversion
phase.I recommend reviewing the pr with
Expected to be zero-diff.