MergedLoadStoreMotion preserves MemoryDependenceAnalysis, it does not require it.
authorDaniel Berlin <dberlin@dberlin.org>
Fri, 22 May 2015 00:13:05 +0000 (00:13 +0000)
committerDaniel Berlin <dberlin@dberlin.org>
Fri, 22 May 2015 00:13:05 +0000 (00:13 +0000)
(It already was coded assuming it can sometimes be null, so no other changes are necessary)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237978 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/MergedLoadStoreMotion.cpp

index 73f42961cb11f563228688a7f9ff96a0f73001db..611a941b0b21322bc1bc52895c529df1c643e57f 100644 (file)
@@ -117,8 +117,8 @@ private:
   // This transformation requires dominator postdominator info
   void getAnalysisUsage(AnalysisUsage &AU) const override {
     AU.addRequired<TargetLibraryInfoWrapperPass>();
-    AU.addRequired<MemoryDependenceAnalysis>();
     AU.addRequired<AliasAnalysis>();
+    AU.addPreserved<MemoryDependenceAnalysis>();
     AU.addPreserved<AliasAnalysis>();
   }
 
@@ -580,7 +580,7 @@ bool MergedLoadStoreMotion::mergeStores(BasicBlock *T) {
 /// \brief Run the transformation for each function
 ///
 bool MergedLoadStoreMotion::runOnFunction(Function &F) {
-  MD = &getAnalysis<MemoryDependenceAnalysis>();
+  MD = getAnalysisIfAvailable<MemoryDependenceAnalysis>();
   AA = &getAnalysis<AliasAnalysis>();
 
   bool Changed = false;