summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/MemorySSA.cpp
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2019-04-29 23:53:04 +0000
committerAlina Sbirlea <asbirlea@google.com>2019-04-29 23:53:04 +0000
commit9a1edd14a2202540ec91e7ed2e187c49e574ea4a (patch)
treed1fec28a90ec249269e4bf9c8d37b962c385853a /llvm/lib/Analysis/MemorySSA.cpp
parent99bad3701344665366e06f7a17f30ae7c5a94fec (diff)
downloadbcm5719-llvm-9a1edd14a2202540ec91e7ed2e187c49e574ea4a.tar.gz
bcm5719-llvm-9a1edd14a2202540ec91e7ed2e187c49e574ea4a.zip
[MemorySSA] Invalidate MemorySSA if AA or DT are invalidated.
Summary: MemorySSA keeps internal pointers of AA and DT. If these get invalidated, so should MemorySSA. Reviewers: george.burgess.iv, chandlerc Subscribers: jlebar, Prazek, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61043 llvm-svn: 359519
Diffstat (limited to 'llvm/lib/Analysis/MemorySSA.cpp')
-rw-r--r--llvm/lib/Analysis/MemorySSA.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/MemorySSA.cpp b/llvm/lib/Analysis/MemorySSA.cpp
index 271d56d3ecd..bdaa26409dd 100644
--- a/llvm/lib/Analysis/MemorySSA.cpp
+++ b/llvm/lib/Analysis/MemorySSA.cpp
@@ -2213,6 +2213,15 @@ MemorySSAAnalysis::Result MemorySSAAnalysis::run(Function &F,
return MemorySSAAnalysis::Result(llvm::make_unique<MemorySSA>(F, &AA, &DT));
}
+bool MemorySSAAnalysis::Result::invalidate(
+ Function &F, const PreservedAnalyses &PA,
+ FunctionAnalysisManager::Invalidator &Inv) {
+ auto PAC = PA.getChecker<MemorySSAAnalysis>();
+ return !(PAC.preserved() || PAC.preservedSet<AllAnalysesOn<Function>>()) ||
+ Inv.invalidate<AAManager>(F, PA) ||
+ Inv.invalidate<DominatorTreeAnalysis>(F, PA);
+}
+
PreservedAnalyses MemorySSAPrinterPass::run(Function &F,
FunctionAnalysisManager &AM) {
OS << "MemorySSA for function: " << F.getName() << "\n";
OpenPOWER on IntegriCloud