[llvm] r360697 - [MemorySSA] LoopSimplify preserves MemorySSA only when flag is flipped.

Alina Sbirlea via llvm-commits llvm-commits at lists.llvm.org
Tue May 14 11:07:18 PDT 2019


Author: asbirlea
Date: Tue May 14 11:07:18 2019
New Revision: 360697

URL: http://llvm.org/viewvc/llvm-project?rev=360697&view=rev
Log:
[MemorySSA] LoopSimplify preserves MemorySSA only when flag is flipped.

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.

Added:
    llvm/trunk/test/Analysis/MemorySSA/pr41853.ll
Modified:
    llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpp

Modified: llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpp?rev=360697&r1=360696&r2=360697&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/LoopSimplify.cpp Tue May 14 11:07:18 2019
@@ -768,7 +768,8 @@ namespace {
       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.

Added: llvm/trunk/test/Analysis/MemorySSA/pr41853.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/MemorySSA/pr41853.ll?rev=360697&view=auto
==============================================================================
--- llvm/trunk/test/Analysis/MemorySSA/pr41853.ll (added)
+++ llvm/trunk/test/Analysis/MemorySSA/pr41853.ll Tue May 14 11:07:18 2019
@@ -0,0 +1,16 @@
+; 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
+}




More information about the llvm-commits mailing list