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...>()

Description

Construct a pass manager.

Declared at: llvm/include/llvm/IR/PassManager.h:473

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)

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)

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

Description

Returns if the pass manager contains any passes.

Declared at: llvm/include/llvm/IR/PassManager.h:574

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)

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)

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