-
Notifications
You must be signed in to change notification settings - Fork 10.5k
OSSA: migrate & organize simplify-cfg tests #38456
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 benchmark |
Build failed |
Build failed |
Performance (x86_64): -O
Code size: -OPerformance (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
|
For switch_enum and dynamic_method_br
This will be gated by a testing flag while tests are staged in.
Support for non-trivial args will be added separately.
as temporary flags to gradually stage in OSSA tests.
DeadEndBlocks is used by low-level OSSA utilities. It needs to be valid whenever OSSA transformations is being done.
For staging in OSSA jump-threading. Currently disabled.
e9856fd
to
e7fcd68
Compare
@swift-ci test |
@swift-ci benchmark |
Performance (x86_64): -O
Code size: -OPerformance (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
|
And organize the tests by the features/optimizations that they require! <file containing non-OSSA tests> -> <files containing OSSA tests> simplify-cfg-debugonly.sil -> simplify_cfg_checkcast.sil simplify-cfg-stress-test.sil -> simplify_cfg_stress_ossa.sil simplify_cfg_address_phi.sil -> simplify_cfg_simple_jumpthread.sil -> simplify_cfg_dom_jumpthread.sil simplify_cfg_and_combine.sil -> simplify_cfg_and_combine_ossa.sil simplify_cfg_args.sil -> simplify_cfg_args_ossa.sil -> simplify_cfg_args_ossa_disabled.sil simplify_cfg_args_crash.sil -> simplify_bb_args.sil simplify_cfg.sil -> simplify_cfg_ossa.sil -> simplify_cfg_ossa_disabled.sil -> simplify_cfg_tryapply.sil -> simplify_cfg_trivial_jumpthread.sil -> simplify_cfg_simple_jumpthread.sil -> simplify_cfg_checkcast.sil -> simplify_cfg_dom_jumpthread.sil simplify_cfg_jump_thread_crash.sil -> simplify_cfg_dom_jumpthread.sil simplify_cfg_opaque.sil -> <self> simplify_cfg_select_enum.sil -> simplify_cfg_dom_jumpthread.sil simplify_cfg_simple.sil -> simplify_cfg_ossa.sil -> simplify_cfg_simple_jumpthread.sil simplify_cfg_unique_values.sil -> simplify_cfg_dominators.sil simplify_switch_enum_objc.sil -> simplify_switch_enum_objc.sil
e7fcd68
to
59ad8c9
Compare
@swift-ci test |
Build failed |
Build failed |
@swift-ci smoke test |
Filed a priority bug to fix the benchmark regression ASAP, but in parallel with other tasks (it's blocking multiple unrelated PRs) |
@swift-ci smoke test macOS |
@swift-ci test windows |
Migrate all the simplify-cfg tests to OSSA and organize them by functionality for staging and debugging sanity (there were a massive number of disorganized tests for this pass).
This PR also adds some basic support for handling trivial block arguments just so that most tests will pass.
This is work in progress. We still need to enable some of the tests and add more tests for OSSA functionality before completely turning on the pass.
I'm merging incrementally now so anyone can make progress. This has been sitting on a branch for 4 months.
This introduces two temporary testing flags. -enable-ossa-simplifycfg and -enable-ossa-jumpthread-simplifycfg. They allow running simplify-cfg test cases without affecting regular compilation. The flags will be removed as soon as we have enough test coverage to confidently enable these parts of simplify-cfg that are still guarded by the flag.
The following test files still need to be enabled
simplify_bb_args.sil
simplify_cfg_args_ossa_disabled.sil
simplify_cfg_checkcast.sil
simplify_cfg_ossa_disabled.sil