[SSADestroyHoisting] Fold into sequences. #41841
Merged
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.
Make loads and copy_addrs of casts of the underlying storage barriers to folding. Destroying the target address may not be equivalent to destroying the source address: for example, if the target address is a generic and the source address is AnyObject, specialization may turn the generic into a trivial type; the destruction of that trivial type fails to destroy the original stored AnyObject, resulting in a leak.
[SSADestroyHoisting] Fold into sequences.
Previously, destroy_addrs were folded into copy_addrs and load [copy]s to produce copy_addr [take]s and load [take]s respectively, but only if the source of the load/copy was exactly the address being destroyed.
Generalize that to a single-block sequence of copy_addrs and load [copy]s of projections of the address being destroyed.