summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2019-06-11 18:27:49 +0000
committerAlina Sbirlea <asbirlea@google.com>2019-06-11 18:27:49 +0000
commit3cef1f7d64f29fab5c8d0ce9abf0fa98c75a3c10 (patch)
treea0454831a68aedf8228db5bc20d91302a5f1c084 /llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
parente20865c387e09ea0ebd5add15c762cd5271ff65f (diff)
downloadbcm5719-llvm-3cef1f7d64f29fab5c8d0ce9abf0fa98c75a3c10.tar.gz
bcm5719-llvm-3cef1f7d64f29fab5c8d0ce9abf0fa98c75a3c10.zip
Only passes that preserve MemorySSA must mark it as preserved.
Summary: The method `getLoopPassPreservedAnalyses` should not mark MemorySSA as preserved, because it's being called in a lot of passes that do not preserve MemorySSA. Instead, mark the MemorySSA analysis as preserved by each pass that does preserve it. These changes only affect the new pass mananger. Reviewers: chandlerc Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62536 llvm-svn: 363091
Diffstat (limited to 'llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp')
-rw-r--r--llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp b/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
index 0743cba852d..5eb8101a3df 100644
--- a/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
+++ b/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp
@@ -396,11 +396,13 @@ TEST_F(LoopPassManagerTest, FunctionPassInvalidationOfLoopAnalyses) {
// No need to re-run if we require again from a fresh loop pass manager.
FPM.addPass(createFunctionToLoopPassAdaptor(
RequireAnalysisLoopPass<MockLoopAnalysisHandle::Analysis>()));
-
// For 'f', preserve most things but not the specific loop analyses.
+ auto PA = getLoopPassPreservedAnalyses();
+ if (EnableMSSALoopDependency)
+ PA.preserve<MemorySSAAnalysis>();
EXPECT_CALL(MFPHandle, run(HasName("f"), _))
.InSequence(FSequence)
- .WillOnce(Return(getLoopPassPreservedAnalyses()));
+ .WillOnce(Return(PA));
EXPECT_CALL(MLAHandle, invalidate(HasName("loop.0.0"), _, _))
.InSequence(FSequence)
.WillOnce(DoDefault());
@@ -475,6 +477,8 @@ TEST_F(LoopPassManagerTest, ModulePassInvalidationOfLoopAnalyses) {
EXPECT_CALL(MMPHandle, run(_, _)).WillOnce(InvokeWithoutArgs([] {
auto PA = getLoopPassPreservedAnalyses();
PA.preserve<FunctionAnalysisManagerModuleProxy>();
+ if (EnableMSSALoopDependency)
+ PA.preserve<MemorySSAAnalysis>();
return PA;
}));
// All the loop analyses from both functions get invalidated before we
@@ -803,6 +807,8 @@ TEST_F(LoopPassManagerTest, IndirectOuterPassInvalidation) {
// the fact that they were preserved.
EXPECT_CALL(MFPHandle, run(HasName("f"), _)).WillOnce(InvokeWithoutArgs([] {
auto PA = getLoopPassPreservedAnalyses();
+ if (EnableMSSALoopDependency)
+ PA.preserve<MemorySSAAnalysis>();
PA.preserveSet<AllAnalysesOn<Loop>>();
return PA;
}));
@@ -824,6 +830,8 @@ TEST_F(LoopPassManagerTest, IndirectOuterPassInvalidation) {
// Which means that no extra invalidation occurs and cached values are used.
EXPECT_CALL(MFPHandle, run(HasName("g"), _)).WillOnce(InvokeWithoutArgs([] {
auto PA = getLoopPassPreservedAnalyses();
+ if (EnableMSSALoopDependency)
+ PA.preserve<MemorySSAAnalysis>();
PA.preserveSet<AllAnalysesOn<Loop>>();
return PA;
}));
OpenPOWER on IntegriCloud