29bool LoopAnalysisManagerFunctionProxy::Result::invalidate(
48 bool invalidateMemorySSAAnalysis =
false;
57 invalidateMemorySSAAnalysis) {
63 for (
Loop *L : PreOrderLoops) {
65 InnerAM->clear(*L,
"<possibly invalidated loop>");
84 bool AreLoopAnalysesPreserved =
94 std::optional<PreservedAnalyses> InnerPA;
99 if (
auto *OuterProxy =
101 for (
const auto &OuterInvalidationPair :
102 OuterProxy->getOuterInvalidations()) {
103 AnalysisKey *OuterAnalysisID = OuterInvalidationPair.first;
104 const auto &InnerAnalysisIDs = OuterInvalidationPair.second;
108 for (
AnalysisKey *InnerAnalysisID : InnerAnalysisIDs)
109 InnerPA->
abandon(InnerAnalysisID);
116 InnerAM->invalidate(*L, *InnerPA);
122 if (!AreLoopAnalysesPreserved)
123 InnerAM->invalidate(*L, PA);
This header provides classes for managing per-loop analyses.
This file exposes an interface to building/using memory SSA to walk memory instructions using a use/d...
Provides implementations for PassManager and AnalysisManager template methods.
A manager for alias analyses.
This templated class represents "all analyses that operate over <a particular IR unit>" (e....
API to communicate dependencies between analyses during invalidation.
bool invalidate(IRUnitT &IR, const PreservedAnalyses &PA)
Trigger the invalidation of some other analysis pass if not already handled and return whether it was...
A container for analyses that lazily runs them and caches their results.
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
A function analysis which provides an AssumptionCache.
Analysis pass which computes a DominatorTree.
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.
Represents a single loop in the control flow graph.
An analysis that produces MemorySSA for a function.
An analysis over an "inner" IR unit that provides access to an analysis manager over a "outer" IR uni...
A set of analyses that are preserved following a run of a transformation pass.
bool allAnalysesInSetPreserved() const
Directly test whether a set of analyses is preserved.
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
void abandon()
Mark an analysis as abandoned.
void preserve()
Mark an analysis as preserved.
Analysis pass that exposes the ScalarEvolution for a function.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
auto reverse(ContainerTy &&C)
PreservedAnalyses getLoopPassPreservedAnalyses()
Returns the minimum set of Analyses that all loop passes must preserve.
A special type used by analysis passes to provide an address that identifies that particular analysis...
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...