Go to the documentation of this file.
51 bool AreFunctionAnalysesPreserved =
62 if (
auto *OuterProxy =
64 for (
const auto &OuterInvalidationPair :
65 OuterProxy->getOuterInvalidations()) {
66 AnalysisKey *OuterAnalysisID = OuterInvalidationPair.first;
67 const auto &InnerAnalysisIDs = OuterInvalidationPair.second;
71 for (
AnalysisKey *InnerAnalysisID : InnerAnalysisIDs)
72 FunctionPA->
abandon(InnerAnalysisID);
79 InnerAM->invalidate(
F, *FunctionPA);
85 if (!AreFunctionAnalysesPreserved)
86 InnerAM->invalidate(
F, PA);
97 if (EagerlyInvalidate)
100 Pass->printPipeline(OS, MapClassName2PassName);
115 if (
F.isDeclaration())
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
Runs the function pass across every function in the module.
A set of analyses that are preserved following a run of a transformation pass.
An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR uni...
This is an optimization pass for GlobalISel generic memory operations.
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
The TimeTraceScope is a helper class to call the begin and end functions of the time trace profiler.
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
bool invalidate(IRUnitT &IR, const PreservedAnalyses &PA)
Trigger the invalidation of some other analysis pass if not already handled and return whether it was...
void invalidate(IRUnitT &IR, const PreservedAnalyses &PA)
Invalidate cached analyses for an IR unit.
This templated class represents "all analyses that operate over <a particular IR unit>" (e....
void abandon()
Mark an analysis as abandoned.
FunctionAnalysisManager FAM
static PreservedAnalyses none()
Convenience factory function for the empty preserved set.
This class implements an extremely fast bulk output stream that can only output to a stream.
API to communicate dependencies between analyses during invalidation.
A special type used to provide an address that identifies a set of related analyses.
An efficient, type-erasing, non-owning reference to a callable.
void runAfterPass(const PassT &Pass, const IRUnitT &IR, const PreservedAnalyses &PA) const
AfterPass instrumentation point - takes Pass instance that has just been executed and constant refere...
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
A special type used by analysis passes to provide an address that identifies that particular analysis...
bool invalidate(IRUnitT &IR, const PreservedAnalyses &PA, typename AnalysisManager< IRUnitT, ExtraArgTs... >::Invalidator &Inv)
Handler for invalidation of the outer IR unit, IRUnitT.
This class provides instrumentation entry points for the Pass Manager, doing calls to callbacks regis...
bool allAnalysesInSetPreserved() const
Directly test whether a set of analyses is preserved.
A Module instance is used to store all the information related to an LLVM module.
void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
StringRef - Represent a constant reference to a string, i.e.
bool areAllPreserved() const
Test whether all analyses are preserved (and none are abandoned).
bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const
BeforePass instrumentation point - takes Pass instance to be executed and constant reference to IR it...
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
Pass interface - Implemented by all 'passes'.
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
A container for analyses that lazily runs them and caches their results.
Pseudo-analysis pass that exposes the PassInstrumentation to pass managers.
An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR un...