LLVM 22.0.0git
|
A template wrapper used to implement the polymorphic API. More...
#include "llvm/IR/PassManagerInternal.h"
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 |
Friends | |
void | swap (PassModel &LHS, PassModel &RHS) |
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>&
. It requires the pass to be a copyable object.
Definition at line 72 of file PassManagerInternal.h.
using llvm::detail::PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs >::has_required_t = decltype(std::declval<T &>().isRequired()) |
Definition at line 103 of file PassManagerInternal.h.
|
inlineexplicit |
Definition at line 73 of file PassManagerInternal.h.
References llvm::move(), and Pass.
Referenced by operator=(), PassModel(), PassModel(), and swap.
|
inline |
Definition at line 76 of file PassManagerInternal.h.
References Pass, and PassModel().
|
inline |
Definition at line 77 of file PassManagerInternal.h.
References llvm::move(), Pass, and PassModel().
|
inlineoverridevirtual |
Polymorphic method 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.
Implements llvm::detail::PassConcept< IRUnitT, AnalysisManagerT, ExtraArgTs... >.
Definition at line 111 of file PassManagerInternal.h.
References passIsRequiredImpl().
|
inlineoverridevirtual |
Polymorphic method to access the name of a pass.
Implements llvm::detail::PassConcept< IRUnitT, AnalysisManagerT, ExtraArgTs... >.
Definition at line 100 of file PassManagerInternal.h.
|
inline |
Definition at line 84 of file PassManagerInternal.h.
References PassModel(), RHS, and swap.
|
inlinestatic |
Definition at line 105 of file PassManagerInternal.h.
Referenced by isRequired().
|
inlineoverridevirtual |
Implements llvm::detail::PassConcept< IRUnitT, AnalysisManagerT, ExtraArgTs... >.
Definition at line 94 of file PassManagerInternal.h.
References Pass.
|
inlineoverridevirtual |
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.
Implements llvm::detail::PassConcept< IRUnitT, AnalysisManagerT, ExtraArgTs... >.
Definition at line 89 of file PassManagerInternal.h.
|
friend |
Definition at line 79 of file PassManagerInternal.h.
References LHS, PassModel(), RHS, swap, and std::swap().
Referenced by operator=(), and swap.
PassT llvm::detail::PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs >::Pass |
Definition at line 113 of file PassManagerInternal.h.
Referenced by PassModel(), PassModel(), PassModel(), printPipeline(), and run().