32bool LoopAnalysisManagerFunctionProxy::Result::invalidate(
 
   34    FunctionAnalysisManager::Invalidator &Inv) {
 
   50  auto PAC = PA.
getChecker<LoopAnalysisManagerFunctionProxy>();
 
   51  bool invalidateMemorySSAAnalysis = 
false;
 
   60      invalidateMemorySSAAnalysis) {
 
   66    for (
Loop *L : PreOrderLoops) {
 
   68      InnerAM->clear(*L, 
"<possibly invalidated loop>");
 
   87  bool AreLoopAnalysesPreserved =
 
   97    std::optional<PreservedAnalyses> InnerPA;
 
  102    if (
auto *OuterProxy =
 
  104      for (
const auto &OuterInvalidationPair :
 
  105           OuterProxy->getOuterInvalidations()) {
 
  106        AnalysisKey *OuterAnalysisID = OuterInvalidationPair.first;
 
  107        const auto &InnerAnalysisIDs = OuterInvalidationPair.second;
 
  108        if (Inv.invalidate(OuterAnalysisID, 
F, PA)) {
 
  111          for (
AnalysisKey *InnerAnalysisID : InnerAnalysisIDs)
 
  112            InnerPA->abandon(InnerAnalysisID);
 
  119      InnerAM->invalidate(*L, *InnerPA);
 
  125    if (!AreLoopAnalysesPreserved)
 
  126      InnerAM->invalidate(*L, PA);
 
 
  134LoopAnalysisManagerFunctionProxy::Result
 
  145  PA.
preserve<LoopAnalysisManagerFunctionProxy>();
 
 
#define LLVM_EXPORT_TEMPLATE
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 <aparticular IR unit>" (e....
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(Function &IR, AnalysisManager< Function, ExtraArgTs... > &AM, ExtraArgTs...)
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.
PreservedAnalyses & preserve()
Mark an analysis as preserved.
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
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.
auto reverse(ContainerTy &&C)
OuterAnalysisManagerProxy< FunctionAnalysisManager, Loop, LoopStandardAnalysisResults & > FunctionAnalysisManagerLoopProxy
A proxy from a FunctionAnalysisManager to a Loop.
LLVM_ABI PreservedAnalyses getLoopPassPreservedAnalyses()
Returns the minimum set of Analyses that all loop passes must preserve.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
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...