Splitting arg scopes and indirect result initializers. #8073
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.
This PR splits the scopes of arguments and indirect result initializers. It will enable the creation of a special call scope around argument emission whose purpose is to ensure that cleanups produced during argument emission are always cleaned up immediately after the call rather than at end of scope.
The first two commits are strictly NFC refactorings. The third commit moves ResultPlan outside of SILGenApply and hoists ResultPlan's initialization creation before any argument emission occurs. This does perturb the SIL slightly by increasing some stack location live ranges. This does not cause the values that are stored in the stack values to have a longer life though.
rdar://30955427