[5.10][SILGen/DI] InitAccessors: Fix handling of nonmutating set
when type has other stored properties
#69104
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.
Cherry-pick of #68875
The original change supported only the case where all stored properties were controlled
by an init accessor but when other fields were involved SILGen would emitted copies of
loaded "self" for each setter application which is redundant and due to the fact that the
setter was escaping.
These changes make partial application of the setter non-escaping which means that
"self" can be borrowed instead of copied.
Scope: Init accessor declarations with
nonmutating set
used in default initializers mixed with other stored properties.Main Branch PR: [SILGen/DI] InitAccessors: Fix handling of
nonmutating set
when type has other stored properties #68875Resolves: Init accessor with non mutating set results in compiler error #67827
Risk: Low
Reviewed By: @jckarter
Testing: SILGen and Interpreter tests added to the test suite.