-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Support new LLVM pass manager #67954
Conversation
@bors try @rust-timer queue |
Awaiting bors try build completion |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
☀️ Try build successful - checks-azure |
Queued 9900a6a with parent ef92009, future comparison URL. |
Finished benchmarking try commit 9900a6a, comparison URL. |
Perf results look good overall. Looks like NewPM is generally a bit faster, but slower on small crates. |
Does it affect the performance of the resulting binaries? |
@mati865 It probably does sometimes, but the fact that no codegen tests fail and check build performance is unaffected at least indicates that nothing terrible is happening. |
Patch for MergeFunctions: https://reviews.llvm.org/D72537 |
@bors try @rust-timer queue Now with LTO pipeline on the new pass manager as well. |
Awaiting bors try build completion |
⌛ Trying commit 2cafa87a982887c67ff346845514e6c28555248f with merge 4c105660027e925c615e41c665d1dee89622991f... |
This comment has been minimized.
This comment has been minimized.
3d46efb
to
1394df7
Compare
This comment has been minimized.
This comment has been minimized.
@bors try |
⌛ Trying commit 1394df792ec00fbd7dc04085ff575cd1be241786 with merge b017687288761a44826d21619dc32a8858d504f4... |
☀️ Try build successful - checks-azure |
Queued b017687288761a44826d21619dc32a8858d504f4 with parent faf45c5, future comparison URL. |
I can not reproduce the fault from the CI run on my local machine. ./x.py test src/test/ui/issues/issue-38226.rs is successful for me. |
@andjo403 Looks like an anon globals assertion failure to me, so likely not spurious. Possibly this is due to the existing check for the name-anon-globals pass being too weak: If no-prepopulate-passes is used, we check whether the bitcode will be needed, but we don't check whether we're preparing for thin LTO. But for that matter ... why are we running LTO if no-prepopulate-passes is enabled? From what I can see, the LTO code doesn't check that option at all, so it's going to be running a standard LTO optimization pipeline despite that option. |
I've now dropped the changes related to name-anon-globals entirely. That should address both the CI failure and @nagisa's concerns. |
this needs a rebase due to #68932 changed the number of parameters to extra_verbose_generic_activity function. |
@andjo403 Done! |
@bors r+ |
📌 Commit 3595c4d5cde4f06dd230b426167f4aaac2edd2ac has been approved by |
@nikic fwiw you could’ve retried bors yourself. |
☔ The latest upstream changes (presumably #69088) made this pull request unmergeable. Please resolve the merge conflicts. |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
To avoid creating memsets with outdated signature. For some reason SROA chokes on this when using NewPM.
The new pass manager can be enabled using -Z new-llvm-pass-manager=on.
@bors r=nagisa |
📌 Commit c6b0803 has been approved by |
Support new LLVM pass manager Add support for the new LLVM pass manager behind a `-Z new-llvm-pass-manager=on` option. Both the pre-link optimization and LTO pipelines use the new pass manager. There's some bits that are not supported yet: * `-C passes`. NewPM requires an entirely different way of specifying custom pass pipelines. We should probably expose that functionality, but it doesn't directly map to what `-C passes` does. * NewPM has no support for custom inline parameters right now. We'd have to add upstream support for that first. * NewPM does not support PGO at O0 in LLVM 9 (which is why those tests fail with NewPM enabled). This is supported in LLVM 10. * NewPM does not support MergeFunctions in LLVM 9. I've landed this upstream just before the cut, so we'll be able to re-enable that with LLVM 10. Closes rust-lang#64289. r? @ghost
Rollup of 7 pull requests Successful merges: - #67954 (Support new LLVM pass manager) - #68981 ( Account for type params on method without parentheses) - #69002 (miri: improve and simplify overflow detection) - #69038 (Add initial debug fmt for Backtrace) - #69040 (Cleanup SGX entry code) - #69086 (Update compiler-builtins to 0.1.25) - #69095 (Minified theme check) Failed merges: r? @ghost
Add support for the new LLVM pass manager behind a
-Z new-llvm-pass-manager=on
option. Both the pre-link optimization and LTO pipelines use the new pass manager. There's some bits that are not supported yet:-C passes
. NewPM requires an entirely different way of specifying custom pass pipelines. We should probably expose that functionality, but it doesn't directly map to what-C passes
does.Closes #64289.
r? @ghost