5.9: [SILOptimizer] Don't optimize move-only lifetimes. #66727
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.
Description: Disable lifetime optimization of instances of move-only types.
The order of deinitialization of such instances are fixed by language rules and can't be altered by optimizations.
Such optimizations could never eliminate any copies of these values regardless.
Risk: Low. The fix is very simple, just bailing at the top level of two utilities.
Scope: Narrow. This only affects move-only types.
Original PR: #66716
Reviewed By: Andrew Trick ( @atrick )
Testing: Added test showing that the utilities don't hoist the destroys of instances of move only structs or enums.
Resolves: rdar://110913116