26 LPMUpdater &>::run(Loop &L, LoopAnalysisManager &AM,
27 LoopStandardAnalysisResults &AR, LPMUpdater &U) {
31 dbgs() <<
"Starting Loop pass manager run.\n";
36 for (
auto &
Pass : Passes) {
38 dbgs() <<
"Running pass: " <<
Pass->name() <<
" on " << L;
62 assert(L.isRecursivelyLCSSAForm(AR.
DT, AR.
LI) &&
63 "Loops must remain in LCSSA form!");
91 dbgs() <<
"Finished Loop pass manager run.\n";
99 : OS(OS), Banner(Banner) {}
Pass interface - Implemented by all 'passes'.
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
This class represents lattice values for constants.
This header provides classes for managing a pipeline of passes over loops in LLVM IR...
void intersect(const PreservedAnalyses &Arg)
Intersect this set with another in place.
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...
bool skipCurrentLoop() const
This can be queried by loop passes which run other loop passes (like pass managers) to know whether t...
bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const
BeforePass instrumentation point - takes Pass instance to be executed and constant reference to IR it...
AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager
The loop analysis manager.
A set of analyses that are preserved following a run of a transformation pass.
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
Pseudo-analysis pass that exposes the PassInstrumentation to pass managers.
This class provides an interface for updating the loop pass manager based on mutations to the loop ne...
print lazy value Lazy Value Info Printer Pass
void runAfterPass(const PassT &Pass, const IRUnitT &IR) const
AfterPass instrumentation point - takes Pass instance that has just been executed and constant refere...
void runAfterPassInvalidated(const PassT &Pass) const
AfterPassInvalidated instrumentation point - takes Pass instance that has just been executed...
void invalidate(IRUnitT &IR)
Invalidate a specific analysis pass for an IR module.
PreservedAnalyses run(Loop &L, LoopAnalysisManager &, LoopStandardAnalysisResults &, LPMUpdater &)
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
Manages a sequence of passes over a particular unit of IR.
Represents a single loop in the control flow graph.
void preserveSet()
Mark an analysis set as preserved.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This templated class represents "all analyses that operate over <a particular IR unit>" (e...
This class implements an extremely fast bulk output stream that can only output to a stream...
A container for analyses that lazily runs them and caches their results.
This class provides instrumentation entry points for the Pass Manager, doing calls to callbacks regis...
void printLoop(Loop &L, raw_ostream &OS, const std::string &Banner="")
Function to print a loop's contents as LLVM's text IR assembly.