[6.2] SILGen: Handle struct fields and addressors as addressable storage. #82296
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.
Explanation: Applies the addressability logic to stored properties of addressable structs, as well as computed properties that are implemented using the
unsafeAddress
/unsafeMutableAddress
addressor accessors. This is necessary for, among other things, C++ interop, where it is expected that projectingshared_ptr
and other imported pointer/reference types does not copy a temporary, and where functions may produce ad-hoc references without formal dependencies.Scope: Fills in missing functionality in the
@_addressable
feature.Issue: rdar://152280207
Original PR: #82288
Risk: Low. This should not affect most existing code, only affecting code that uses new C++ interop or
~Escapable
type features.Testing: Swift CI, test cases from bug report
Reviewer: @atrick