class PassManager
Declaration
template <typename IRUnitT,
typename AnalysisManagerT = AnalysisManager<IRUnitT>,
typename... ExtraArgTs>
class PassManager { /* full declaration omitted */ };
Description
Manages a sequence of passes over a particular unit of IR. A pass manager contains a sequence of passes to run over a particular unit of IR (e.g. Functions, Modules). It is itself a valid pass over that unit of IR, and when run over some given IR will run each of its contained passes in sequence. Pass managers are the primary and most basic building block of a pass pipeline. When you run a pass manager, you provide an \c AnalysisManager<IRUnitT> argument. The pass manager will propagate that analysis manager to each pass it runs, and will call the analysis manager's invalidation routine with the PreservedAnalyses of each pass it runs.
Declared at: llvm/include/llvm/IR/PassManager.h:469
Templates
- IRUnitT
- AnalysisManagerT = AnalysisManager<IRUnitT>
- ExtraArgTs
Member Variables
- protected std::vector<std::unique_ptr<PassConceptT>> Passes
Method Overview
- public PassManager<IRUnitT, AnalysisManagerT, ExtraArgTs...>()
- public PassManager<IRUnitT, AnalysisManagerT, ExtraArgTs...>(PassManager<IRUnitT, AnalysisManagerT, ExtraArgTs...> && Arg)
- public template <typename PassT>std::enable_if_t<!std::is_same<PassT, PassManager<IRUnitT, AnalysisManagerT, ExtraArgTs...>>::value> addPass(PassT && Pass)
- public template <typename PassT>std::enable_if_t<std::is_same<PassT, PassManager<IRUnitT, AnalysisManagerT, ExtraArgTs...>>::value> addPass(PassT && Pass)
- public bool isEmpty() const
- public static bool isRequired()
- public void printPipeline(llvm::raw_ostream & OS, function_ref<llvm::StringRef (llvm::StringRef)> MapClassName2PassName)
- public llvm::PreservedAnalyses run(IRUnitT & IR, AnalysisManagerT & AM, ExtraArgTs... ExtraArgs)
Methods
¶PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>()
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>()
Description
Construct a pass manager.
Declared at: llvm/include/llvm/IR/PassManager.h:473
¶PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>(
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>&& Arg)
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>(
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>&& Arg)
Declared at: llvm/include/llvm/IR/PassManager.h:479
Parameters
- PassManager<IRUnitT, AnalysisManagerT, ExtraArgTs...>&& Arg
¶template <typename PassT>
std::enable_if_t<!std::is_same<
PassT,
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>>::value>
addPass(PassT&& Pass)
template <typename PassT>
std::enable_if_t<!std::is_same<
PassT,
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>>::value>
addPass(PassT&& Pass)
Declared at: llvm/include/llvm/IR/PassManager.h:550
Templates
- PassT
Parameters
- PassT&& Pass
¶template <typename PassT>
std::enable_if_t<std::is_same<
PassT,
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>>::value>
addPass(PassT&& Pass)
template <typename PassT>
std::enable_if_t<std::is_same<
PassT,
PassManager<IRUnitT,
AnalysisManagerT,
ExtraArgTs...>>::value>
addPass(PassT&& Pass)
Description
When adding a pass manager pass that has the same type as this pass manager, simply move the passes over. This is because we don't have use cases rely on executing nested pass managers. Doing this could reduce implementation complexity and avoid potential invalidation issues that may happen with nested pass managers of the same type.
Declared at: llvm/include/llvm/IR/PassManager.h:568
Templates
- PassT
Parameters
- PassT&& Pass
¶bool isEmpty() const
bool isEmpty() const
Description
Returns if the pass manager contains any passes.
Declared at: llvm/include/llvm/IR/PassManager.h:574
¶static bool isRequired()
static bool isRequired()
Declared at: llvm/include/llvm/IR/PassManager.h:576
¶void printPipeline(
llvm::raw_ostream& OS,
function_ref<llvm::StringRef(llvm::StringRef)>
MapClassName2PassName)
void printPipeline(
llvm::raw_ostream& OS,
function_ref<llvm::StringRef(llvm::StringRef)>
MapClassName2PassName)
Declared at: llvm/include/llvm/IR/PassManager.h:486
Parameters
- llvm::raw_ostream& OS
- function_ref<llvm::StringRef(llvm::StringRef)> MapClassName2PassName
¶llvm::PreservedAnalyses run(
IRUnitT& IR,
AnalysisManagerT& AM,
ExtraArgTs... ExtraArgs)
llvm::PreservedAnalyses run(
IRUnitT& IR,
AnalysisManagerT& AM,
ExtraArgTs... ExtraArgs)
Description
Run all of the passes in this manager over the given unit of IR. ExtraArgs are passed to each pass.
Declared at: llvm/include/llvm/IR/PassManager.h:498
Parameters
- IRUnitT& IR
- AnalysisManagerT& AM
- ExtraArgTs... ExtraArgs