summaryrefslogtreecommitdiff
path: root/include/llvm/IR/PassManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/IR/PassManager.h')
-rw-r--r--include/llvm/IR/PassManager.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/llvm/IR/PassManager.h b/include/llvm/IR/PassManager.h
index b85f7f1762..09eb10b846 100644
--- a/include/llvm/IR/PassManager.h
+++ b/include/llvm/IR/PassManager.h
@@ -168,6 +168,9 @@ template <typename IRUnitT, typename AnalysisManagerT> struct PassConcept {
/// desired. Also that the analysis manager may be null if there is no
/// analysis manager in the pass pipeline.
virtual PreservedAnalyses run(IRUnitT IR, AnalysisManagerT *AM) = 0;
+
+ /// \brief Polymorphic method to access the name of a pass.
+ virtual StringRef name() = 0;
};
/// \brief SFINAE metafunction for computing whether \c PassT has a run method
@@ -208,6 +211,7 @@ struct PassModel<IRUnitT, AnalysisManagerT, PassT,
virtual PreservedAnalyses run(IRUnitT IR, AnalysisManagerT *AM) {
return Pass.run(IR, AM);
}
+ virtual StringRef name() { return PassT::name(); }
PassT Pass;
};
@@ -221,6 +225,7 @@ struct PassModel<IRUnitT, AnalysisManagerT, PassT,
virtual PreservedAnalyses run(IRUnitT IR, AnalysisManagerT *AM) {
return Pass.run(IR);
}
+ virtual StringRef name() { return PassT::name(); }
PassT Pass;
};
@@ -403,6 +408,8 @@ public:
Passes.push_back(new ModulePassModel<ModulePassT>(llvm_move(Pass)));
}
+ static StringRef name() { return "ModulePassManager"; }
+
private:
// Pull in the concept type and model template specialized for modules.
typedef detail::PassConcept<Module *, ModuleAnalysisManager> ModulePassConcept;
@@ -428,6 +435,8 @@ public:
PreservedAnalyses run(Function *F, FunctionAnalysisManager *AM = 0);
+ static StringRef name() { return "FunctionPassManager"; }
+
private:
// Pull in the concept type and model template specialized for functions.
typedef detail::PassConcept<Function *, FunctionAnalysisManager>
@@ -808,6 +817,8 @@ public:
return PA;
}
+ static StringRef name() { return "ModuleToFunctionPassAdaptor"; }
+
private:
FunctionPassT Pass;
};