-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Generalize and fix SinkAddressProjections. #27444
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
Conversation
@swift-ci test |
@swift-ci test source compatibility |
@swift-ci benchmark |
Performance: -O
Code size: -O
Performance: -Osize
Code size: -Osize
Performance: -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
|
I'll be able to merge this after merging fixes for isTriviallyDuplicatable |
@swift-ci test |
@swift-ci test source compatibility |
@swift-ci benchmark |
Build failed |
Build failed |
Performance: -O
Code size: -OPerformance: -Osize
Code size: -OsizePerformance: -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
|
Fixes a potential real bug in the case that SinkAddressProjections moves projections without notifying SimplifyCFG of the change. This could fail to update Analyses (probably won't break anything in practice). Introduce SILInstruction::isPure. Among other things, this can tell you if it's safe to duplicate instructions at their uses. SinkAddressProjections should check this before sinking uses. I couldn't find a way to expose this as a real bug, but it is a theoretical bug. Add the SinkAddressProjections functionality to the BasicBlockCloner utility. Enable address projection sinking for all BasicBlockCloner clients (the four different kinds of jump-threading that use it). This brings the compiler much closer to banning all address phis. The "bugs" were originally introduced a week ago here: commit f22371b (fork/fix-address-phi, fix-address-phi) Author: Andrew Trick <[email protected]> Date: Tue Sep 17 16:45:51 2019 Add SIL SinkAddressProjections utility to avoid address phis. Enable this utility during jump-threading in SimplifyCFG. Ultimately, the SIL verifier should prevent all address-phis and we'll need to use this utility in a few more places. Fixes <rdar://problem/55320867> SIL verification failed: Unknown formal access pattern: storage
@swift-ci test source compatibility |
@swift-ci smoke test |
The SCK tests are failing because of rdar://57213598 |
Fixes a potential real bug in the case that SinkAddressProjections moves
projections without notifying SimplifyCFG of the change. This could
fail to update Analyses (probably won't break anything in practice).
Introduce SILInstruction::isPure. Among other things, this can tell
you if it's safe to duplicate instructions at their
uses. SinkAddressProjections should check this before sinking uses. I
couldn't find a way to expose this as a real bug, but it is a
theoretical bug.
Add the SinkAddressProjections functionality to the BasicBlockCloner
utility. Enable address projection sinking for all BasicBlockCloner
clients (the four different kinds of jump-threading that use it). This
brings the compiler much closer to banning all address phis.
The "bugs" were originally introduced a week ago here:
commit f22371b (fork/fix-address-phi, fix-address-phi)
Author: Andrew Trick [email protected]
Date: Tue Sep 17 16:45:51 2019