diff options
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfo.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/Analysis/DominanceFrontier.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/Analysis/LoopInfo.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/Analysis/PostDominators.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/Analysis/RegionInfo.cpp | 9 | 
5 files changed, 46 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BlockFrequencyInfo.cpp b/llvm/lib/Analysis/BlockFrequencyInfo.cpp index 4cdbe4d0fcf..9c1c9667a67 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfo.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfo.cpp @@ -132,6 +132,15 @@ BlockFrequencyInfo &BlockFrequencyInfo::operator=(BlockFrequencyInfo &&RHS) {  // template instantiated which is not available in the header.  BlockFrequencyInfo::~BlockFrequencyInfo() {} +bool BlockFrequencyInfo::invalidate(Function &F, const PreservedAnalyses &PA, +                                    FunctionAnalysisManager::Invalidator &) { +  // Check whether the analysis, all analyses on functions, or the function's +  // CFG have been preserved. +  auto PAC = PA.getChecker<BlockFrequencyAnalysis>(); +  return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>() || +           PAC.preservedSet<CFGAnalyses>()); +} +  void BlockFrequencyInfo::calculate(const Function &F,                                     const BranchProbabilityInfo &BPI,                                     const LoopInfo &LI) { diff --git a/llvm/lib/Analysis/DominanceFrontier.cpp b/llvm/lib/Analysis/DominanceFrontier.cpp index 15856c3f8b7..5b6e2d0476e 100644 --- a/llvm/lib/Analysis/DominanceFrontier.cpp +++ b/llvm/lib/Analysis/DominanceFrontier.cpp @@ -56,6 +56,16 @@ LLVM_DUMP_METHOD void DominanceFrontierWrapperPass::dump() const {  }  #endif +/// Handle invalidation explicitly. +bool DominanceFrontier::invalidate(Function &F, const PreservedAnalyses &PA, +                                   FunctionAnalysisManager::Invalidator &) { +  // Check whether the analysis, all analyses on functions, or the function's +  // CFG have been preserved. +  auto PAC = PA.getChecker<DominanceFrontierAnalysis>(); +  return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>() || +           PAC.preservedSet<CFGAnalyses>()); +} +  AnalysisKey DominanceFrontierAnalysis::Key;  DominanceFrontier DominanceFrontierAnalysis::run(Function &F, diff --git a/llvm/lib/Analysis/LoopInfo.cpp b/llvm/lib/Analysis/LoopInfo.cpp index 1b5d6e5d1b7..fb05e60e57d 100644 --- a/llvm/lib/Analysis/LoopInfo.cpp +++ b/llvm/lib/Analysis/LoopInfo.cpp @@ -610,6 +610,15 @@ LoopInfo::LoopInfo(const DominatorTreeBase<BasicBlock> &DomTree) {    analyze(DomTree);  } +bool LoopInfo::invalidate(Function &F, const PreservedAnalyses &PA, +                          FunctionAnalysisManager::Invalidator &) { +  // Check whether the analysis, all analyses on functions, or the function's +  // CFG have been preserved. +  auto PAC = PA.getChecker<LoopAnalysis>(); +  return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>() || +           PAC.preservedSet<CFGAnalyses>()); +} +  void LoopInfo::markAsRemoved(Loop *Unloop) {    assert(!Unloop->isInvalid() && "Loop has already been removed");    Unloop->invalidate(); diff --git a/llvm/lib/Analysis/PostDominators.cpp b/llvm/lib/Analysis/PostDominators.cpp index cb9438a2f92..1caf151546d 100644 --- a/llvm/lib/Analysis/PostDominators.cpp +++ b/llvm/lib/Analysis/PostDominators.cpp @@ -31,6 +31,15 @@ char PostDominatorTreeWrapperPass::ID = 0;  INITIALIZE_PASS(PostDominatorTreeWrapperPass, "postdomtree",                  "Post-Dominator Tree Construction", true, true) +bool PostDominatorTree::invalidate(Function &F, const PreservedAnalyses &PA, +                                   FunctionAnalysisManager::Invalidator &) { +  // Check whether the analysis, all analyses on functions, or the function's +  // CFG have been preserved. +  auto PAC = PA.getChecker<PostDominatorTreeAnalysis>(); +  return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>() || +           PAC.preservedSet<CFGAnalyses>()); +} +  bool PostDominatorTreeWrapperPass::runOnFunction(Function &F) {    DT.recalculate(F);    return false; diff --git a/llvm/lib/Analysis/RegionInfo.cpp b/llvm/lib/Analysis/RegionInfo.cpp index 8c084ddd226..63ef8d28d44 100644 --- a/llvm/lib/Analysis/RegionInfo.cpp +++ b/llvm/lib/Analysis/RegionInfo.cpp @@ -83,6 +83,15 @@ RegionInfo::~RegionInfo() {  } +bool RegionInfo::invalidate(Function &F, const PreservedAnalyses &PA, +                            FunctionAnalysisManager::Invalidator &) { +  // Check whether the analysis, all analyses on functions, or the function's +  // CFG have been preserved. +  auto PAC = PA.getChecker<RegionInfoAnalysis>(); +  return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>() || +           PAC.preservedSet<CFGAnalyses>()); +} +  void RegionInfo::updateStatistics(Region *R) {    ++numRegions;  | 

