LoopSimplify can preserve MemorySSA after r360270.
But the MemorySSA analysis is retrieved and preserved only when the
EnableMSSALoopDependency is set to true. Use the same conditional to
mark the pass as preserved, otherwise subsequent passes will get an
invalid analysis.
Resolves PR41853.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360697
91177308-0d34-0410-b5e6-
96231b3b80d8
AU.addPreserved<DependenceAnalysisWrapperPass>();
AU.addPreservedID(BreakCriticalEdgesID); // No critical edges added.
AU.addPreserved<BranchProbabilityInfoWrapperPass>();
- AU.addPreserved<MemorySSAWrapperPass>();
+ if (EnableMSSALoopDependency)
+ AU.addPreserved<MemorySSAWrapperPass>();
}
/// verifyAnalysis() - Verify LoopSimplifyForm's guarantees.
--- /dev/null
+; RUN: opt -S -memoryssa -loop-simplify -early-cse-memssa -verify-memoryssa %s | FileCheck %s
+; RUN: opt -S -memoryssa -loop-simplify -early-cse-memssa -enable-mssa-loop-dependency -verify-memoryssa %s | FileCheck %s
+; REQUIRES: asserts
+target triple = "x86_64-unknown-linux-gnu"
+
+; CHECK-LABEL: @func()
+define void @func() {
+ br i1 undef, label %bb5, label %bb3
+
+bb5: ; preds = %bb5, %0
+ store i16 undef, i16* undef
+ br i1 undef, label %bb5, label %bb3
+
+bb3: ; preds = %bb5, %0
+ ret void
+}