Go to the documentation of this file.
47 bool invalidateMemorySSAAnalysis =
false;
56 invalidateMemorySSAAnalysis) {
62 for (
Loop *L : PreOrderLoops) {
64 InnerAM->clear(*L,
"<possibly invalidated loop>");
83 bool AreLoopAnalysesPreserved =
98 if (
auto *OuterProxy =
100 for (
const auto &OuterInvalidationPair :
101 OuterProxy->getOuterInvalidations()) {
102 AnalysisKey *OuterAnalysisID = OuterInvalidationPair.first;
103 const auto &InnerAnalysisIDs = OuterInvalidationPair.second;
107 for (
AnalysisKey *InnerAnalysisID : InnerAnalysisIDs)
108 InnerPA->
abandon(InnerAnalysisID);
115 InnerAM->invalidate(*L, *InnerPA);
121 if (!AreLoopAnalysesPreserved)
122 InnerAM->invalidate(*L, PA);
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...
A manager for alias analyses.
Analysis pass that exposes the ScalarEvolution for a function.
This is an optimization pass for GlobalISel generic memory operations.
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...
Represents a single loop in the control flow graph.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This templated class represents "all analyses that operate over <a particular IR unit>" (e....
void abandon()
Mark an analysis as abandoned.
auto reverse(ContainerTy &&C, std::enable_if_t< has_rbegin< ContainerTy >::value > *=nullptr)
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...
API to communicate dependencies between analyses during invalidation.
PreservedAnalyses getLoopPassPreservedAnalyses()
Returns the minimum set of Analyses that all loop passes must preserve.
A function analysis which provides an AssumptionCache.
void preserve()
Mark an analysis as preserved.
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.
bool allAnalysesInSetPreserved() const
Directly test whether a set of analyses is preserved.
An analysis that produces MemorySSA for a function.
Analysis pass which computes a DominatorTree.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
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.
An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR un...
Result run(IRUnitT &IR, AnalysisManager< IRUnitT, ExtraArgTs... > &AM, ExtraArgTs...)
Run the analysis pass and create our proxy result object.
Analysis pass that exposes the LoopInfo for a function.