A utility pass template to force an analysis result to be available.

Synopsis

Declared in <llvm/IR/PassManager.h>

template<
    typename AnalysisT,
    typename IRUnitT,
    typename AnalysisManagerT = AnalysisManager<IRUnitT>,
    typename... ExtraArgTs>
struct RequireAnalysisPass
    : RequiredPassInfoMixin<RequireAnalysisPass<AnalysisT, IRUnitT, AnalysisManagerT, ExtraArgTs...>>

Description

If there are extra arguments at the pass's run level there may also be extra arguments to the analysis manager's getResult routine. We can't guess how to effectively map the arguments from one to the other, and so this specialization just ignores them.

Specific patterns of run‐method extra arguments and analysis manager extra arguments will have to be defined as appropriate specializations.

Base Classes

Name

Description

RequiredPassInfoMixin<RequireAnalysisPass<AnalysisT, IRUnitT, AnalysisManagerT, ExtraArgTs...>>

A CRTP mix‐in for passes that should not be skipped.

Member Functions

Name

Description

printPipeline

Print this pass as require<AnalysisName>.

run

Run this pass over some unit of IR.

Static Member Functions

Name

Description

isRequired

Return true; required passes cannot be skipped.

Specializations

Name

Description

RequireAnalysisPass<AnalysisT, Loop, LoopAnalysisManager, LoopStandardAnalysisResults&, LPMUpdater&>

A require‐analysis pass specialization for loop transformations.

RequireAnalysisPass<AnalysisT, LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph&, CGSCCUpdateResult&>

An explicit specialization of the require analysis template pass.

Created with MrDocs