-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[SILOpt] Enabled SSADestroyHoisting. #41310
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
[SILOpt] Enabled SSADestroyHoisting. #41310
Conversation
dd13d11
to
b0b9b98
Compare
b0b9b98
to
47fc6dc
Compare
@swift-ci please test |
@swift-ci please benchmark |
9795ac0
to
86eea4c
Compare
Previously, in GatherUniqueStorageUses::visiteUse, the results of calls to visit#### on the visitor were not used. Here, they are returned from the function.
For the DeinitBarriers helper class.
The new destroy_addr hoisting respects lexical lifetimes. It will replace all other destory hoisting.
For trivial values, the pattern %val = load [trivial] %addr destroy_addr %addr arises. Don't fold these two into %val = load [take] %addr because that isn't valid SIL for trivial types in OSSA.
Just as a full apply may have side-effects including synchronization, so may an end_apply, which is lowered to the apply of a continuation.
86eea4c
to
b516b04
Compare
@swift-ci please test |
@swift-ci please benchmark |
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.
Awesome! Thanks for the fixes.
@swift-ci please test source compatibility |
Performance (x86_64): -O
Code size: -O
Performance (x86_64): -Osize
Code size: -OsizePerformance (x86_64): -Onone
Code size: -swiftlibsHow to read the dataThe tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.If you see any unexpected regressions, you should consider fixing the Noise: Sometimes the performance results (not code size!) contain false Hardware Overview
|
Build failed |
@swift-ci please test macOS platform |
@swift-ci please test compiler performance |
The new destroy_addr hoisting respects lexical lifetimes. It will replace all other destory hoisting.