Description
This is a tracking issue for rustc's use of the new LLVM pass manager, which is currently behind an unstable rustc flag -Znew-llvm-pass-manager
but which we will presumably want to make default at the right time, just like Clang intends to do.
When building with -Znew-llvm-pass-manager
, both the pre-link optimization and LTO pipelines use the new pass manager.
There are some bits that are not supported yet:
-
NewPM does not support PGO at O0 in LLVM 9. This is supported in LLVM 10.Fixed by Update to LLVM 10 #67759. - NewPM does not support MergeFunctions in LLVM 9. While it's supported in LLVM 10, it's not exposed as a PassBuilder option. We'll have to manually schedule the pass, or add that option upstream.
-
-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.
About tracking issues
Tracking issues are used to record the overall progress of implementation. They are also uses as hubs connecting to other relevant issues, e.g., bugs or open design questions. A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature. Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Implementation history
- Implemented in Support new LLVM pass manager #67954