Legacy PM in LLVM 15

Hello, I have a quick question about the status of the legacy PM for optimisation pipelines. From LLVM 14 Release notes:

Using the legacy pass manager for the optimization pipeline is deprecated and will be removed after LLVM 14.

I thought that the “removal of the legacy PM” would have happened before the LLVM 15 release, but there’s no mention of that in the corresponding release notes. Is it an omission in the release notes or is the legacy PM still supported in LLVM 15?

This has come up in llvm-tutor and I’m not sure what the answer is. The original Hello pass is still present in-tree, so I’m guessing that the legacy PM remains one of the supported options.

Thanks for your help!

The legacy pass manager for the middle-end optimizer is no longer supported – in the sense that any issues involving it will not be fixed.

However, the necessary work to completely remove the implementation has not been done yet. The current state is that the legacy PM can no longer be used from clang, can no longer be enabled by default, no longer supports LTO, no longer supports instrumentation, coroutines and a few other odds and ends (like argument promotion). But the core optimization pipeline is still in place.

1 Like

Thanks for clarifying this!

An additional point is that the LegacyPM is still very much used for backend codegen pipelines. I don’t know what, if any, the plan is for phasing that out, but it’s bound to take quite a bit longer.