-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Simplify accessed storage; remove RefElementAddr #24728
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simplify accessed storage; remove RefElementAddr #24728
Conversation
@swift-ci test. |
@swift-ci test source compatibility. |
Just ignore the first commit "Cache struct/class field offsets in SIL". I'll wait for that PR to be reviewed before merging this one--rebasing is getting to frustrating. |
@swift-ci test. |
@swift-ci test source compatibility |
Build failed |
Build failed |
@swift-ci test |
Build failed |
Build failed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
- code simplification critical for comprehension - substantially improves the overhead of AccessedStorage comparison - as a side effect improves precision of analysis in some cases AccessedStorage is meant to be an immutable value type that identifies a storage location with minimal representation. It is used in many global interprocedural data structures. The RefElementAddress instruction that it was derived from does not contribute to the uniqueness of the storage location. It doesn't belong here. It was being used to create a ProjectionPath, which is an extremely inneficient way to compare access paths. Just delete all the code related to that extra field.
@swift-ci smoke test and merge. |
@swift-ci smoke test and merge |
Remove RefElementAddr field from AccessedStorage.