LLVM: llvm::detail::PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs (original) (raw)

A template wrapper used to implement the polymorphic API. More...

#include "[llvm/IR/PassManagerInternal.h](PassManagerInternal%5F8h%5Fsource.html)"

Public Types
template<typename T>
using has_required_t = decltype(std::declval<T &>().isRequired())
Public Member Functions
PassModel (PassT Pass)
PassModel (const PassModel &Arg)
PassModel (PassModel &&Arg)
PassModel & operator= (PassModel RHS)
PreservedAnalyses run (IRUnitT &IR, AnalysisManagerT &AM, ExtraArgTs... ExtraArgs) override
The polymorphic API which runs the pass over a given IR entity.
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName) override
StringRef name () const override
Polymorphic method to access the name of a pass.
bool isRequired () const override
Polymorphic method to let a pass optionally exempted from skipping by PassInstrumentation.
Public Member Functions inherited from llvm::detail::PassConcept< IRUnitT, AnalysisManagerT, ExtraArgTs... >
virtual ~PassConcept ()=default
Static Public Member Functions
template<typename T>
static bool passIsRequiredImpl ()
Public Attributes
PassT Pass

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>
struct llvm::detail::PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs >

A template wrapper used to implement the polymorphic API.

Can be instantiated for any object which provides a run method accepting an IRUnitT& and an [AnalysisManager<IRUnit>](classllvm%5F1%5F1AnalysisManager.html "A container for analyses that lazily runs them and caches their results.")&. It requires the pass to be a copyable object.

Definition at line 72 of file PassManagerInternal.h.

has_required_t

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

template<typename T>

using llvm::detail::PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs >::has_required_t = decltype(std::declval<T &>().isRequired())

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

PassModel() [2/3]

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

PassModel() [3/3]

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

isRequired()

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

name()

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

operator=()

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

passIsRequiredImpl()

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

template<typename T>

printPipeline()

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

run()

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

swap

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>

void swap ( PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs > & LHS, PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs > & RHS ) friend

Pass

template<typename IRUnitT, typename PassT, typename AnalysisManagerT, typename... ExtraArgTs>


The documentation for this struct was generated from the following file: