[llvm] [CodeGen] Support start/stop in CodeGenPassBuilder (PR #70912)
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 16 14:07:45 PST 2024
================
@@ -175,73 +183,82 @@ template <typename DerivedT> class CodeGenPassBuilder {
// Function object to maintain state while adding codegen IR passes.
class AddIRPass {
public:
- AddIRPass(ModulePassManager &MPM) : MPM(MPM) {}
+ AddIRPass(ModulePassManager &MPM, const DerivedT &PB) : MPM(MPM), PB(PB) {}
~AddIRPass() {
if (!FPM.isEmpty())
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
}
- template <typename PassT> void operator()(PassT &&Pass) {
+ template <typename PassT>
+ void operator()(PassT &&Pass, StringRef Name = PassT::name()) {
static_assert((is_detected<is_function_pass_t, PassT>::value ||
is_detected<is_module_pass_t, PassT>::value) &&
"Only module pass and function pass are supported.");
// Add Function Pass
if constexpr (is_detected<is_function_pass_t, PassT>::value) {
+ if (!PB.runBeforeAdding(Name))
+ return;
----------------
aeubanks wrote:
can factor this out of if/else branches
https://github.com/llvm/llvm-project/pull/70912
More information about the llvm-commits
mailing list