struct PassConcept

Declaration

template <typename IRUnitT,
          typename AnalysisManagerT,
          typename... ExtraArgTs>
struct PassConcept { /* full declaration omitted */ };

Description

Template for the abstract base class used to dispatch polymorphically over pass objects.

Declared at: llvm/include/llvm/IR/PassManagerInternal.h:37

Templates

IRUnitT
AnalysisManagerT
ExtraArgTs

Method Overview

Methods

virtual bool isRequired() const

Description

Polymorphic method to to let a pass optionally exempted from skipping by PassInstrumentation. To opt-in, pass should implement `static bool isRequired()`. It's no-op to have `isRequired` always return false since that is the default.

Declared at: llvm/include/llvm/IR/PassManagerInternal.h:59

virtual llvm::StringRef name() const

Description

Polymorphic method to access the name of a pass.

Declared at: llvm/include/llvm/IR/PassManagerInternal.h:53

virtual void printPipeline(
    llvm::raw_ostream& OS,
    function_ref<llvm::StringRef(llvm::StringRef)>
        MapClassName2PassName)

Declared at: llvm/include/llvm/IR/PassManagerInternal.h:50

Parameters

llvm::raw_ostream& OS
function_ref<llvm::StringRef(llvm::StringRef)> MapClassName2PassName

virtual llvm::PreservedAnalyses run(
    IRUnitT& IR,
    AnalysisManagerT& AM,
    ExtraArgTs... ExtraArgs)

Description

The polymorphic API which runs the pass over a given IR entity. Note that actual pass object can omit the analysis manager argument if desired. Also that the analysis manager may be null if there is no analysis manager in the pass pipeline.

Declared at: llvm/include/llvm/IR/PassManagerInternal.h:46

Parameters

IRUnitT& IR
AnalysisManagerT& AM
ExtraArgTs... ExtraArgs

virtual ~PassConcept<IRUnitT,
                     AnalysisManagerT,
                     ExtraArgTs...>()

Declared at: llvm/include/llvm/IR/PassManagerInternal.h:39