diff options
| author | Alina Sbirlea <asbirlea@google.com> | 2019-04-23 20:59:44 +0000 |
|---|---|---|
| committer | Alina Sbirlea <asbirlea@google.com> | 2019-04-23 20:59:44 +0000 |
| commit | 4fd1f266b1e984e06da164beb7513589a87e983a (patch) | |
| tree | 805c4305db09a736fdbdd3f746bc989db43ef745 /llvm/lib/Analysis | |
| parent | 26518466ef8c23314710c97807b7d0f6e0ca86ca (diff) | |
| download | bcm5719-llvm-4fd1f266b1e984e06da164beb7513589a87e983a.tar.gz bcm5719-llvm-4fd1f266b1e984e06da164beb7513589a87e983a.zip | |
[MemorySSA] LCSSA preserves MemorySSA.
Summary:
Enabling MemorySSA in the old pass manager leads to MemorySSA being run
twice due to the fact that LCSSA and LoopSimplify do not preserve
MemorySSA. This is the first step to address that: target LCSSA.
LCSSA does not make any changes that invalidate MemorySSA, so it
preserves it by design. It must preserve AA as well, for this to hold.
After this patch, MemorySSA is still run twice in the old pass manager.
Step two follows: target LoopSimplify.
Subscribers: mehdi_amini, jlebar, Prazek, llvm-commits, george.burgess.iv, chandlerc
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60832
llvm-svn: 359032
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/LoopAnalysisManager.cpp | 5 | ||||
| -rw-r--r-- | llvm/lib/Analysis/MemorySSA.cpp | 5 |
2 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/LoopAnalysisManager.cpp b/llvm/lib/Analysis/LoopAnalysisManager.cpp index 8ae92e17399..d0cfb3e7342 100644 --- a/llvm/lib/Analysis/LoopAnalysisManager.cpp +++ b/llvm/lib/Analysis/LoopAnalysisManager.cpp @@ -18,11 +18,6 @@ using namespace llvm; namespace llvm { -/// Enables memory ssa as a dependency for loop passes in legacy pass manager. -cl::opt<bool> EnableMSSALoopDependency( - "enable-mssa-loop-dependency", cl::Hidden, cl::init(false), - cl::desc("Enable MemorySSA dependency for loop pass manager")); - // Explicit template instantiations and specialization definitions for core // template typedefs. template class AllAnalysesOn<Loop>; diff --git a/llvm/lib/Analysis/MemorySSA.cpp b/llvm/lib/Analysis/MemorySSA.cpp index cd6235de685..271d56d3ecd 100644 --- a/llvm/lib/Analysis/MemorySSA.cpp +++ b/llvm/lib/Analysis/MemorySSA.cpp @@ -81,6 +81,11 @@ bool llvm::VerifyMemorySSA = true; #else bool llvm::VerifyMemorySSA = false; #endif +/// Enables memory ssa as a dependency for loop passes in legacy pass manager. +cl::opt<bool> llvm::EnableMSSALoopDependency( + "enable-mssa-loop-dependency", cl::Hidden, cl::init(false), + cl::desc("Enable MemorySSA dependency for loop pass manager")); + static cl::opt<bool, true> VerifyMemorySSAX("verify-memoryssa", cl::location(VerifyMemorySSA), cl::Hidden, cl::desc("Enable verification of MemorySSA.")); |

