Hi,<br><br>I planed to use MemoryDependenceAnalysis in LoopStrengthReduction (LSR) pass. After I add MemoryDependenceAnalysis as a required analysis pass, the opt program always would incur endless loop error when compiling any file.<br><br>Can anyone give me some hints why I cannot use MemoryDependenceAnalysis in LSR?<br><br>Here is my very simple patch for adding MemoryDependenceAnalysis into LSR pass:<br><br>diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp<br>index eff5268..8431db5 100644<br>--- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp<br>+++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp<br>@@ -64,6 +64,7 @@<br> #include "llvm/Analysis/LoopPass.h"<br> #include "llvm/Analysis/ScalarEvolutionExpander.h"<br> #include "llvm/Analysis/TargetTransformInfo.h"<br>+#include "llvm/Analysis/MemoryDependenceAnalysis.h"<br> #include "llvm/Assembly/Writer.h"<br> #include "llvm/IR/Constants.h"<br> #include "llvm/IR/DerivedTypes.h"<br>@@ -4875,6 +4876,7 @@ INITIALIZE_PASS_BEGIN(LoopStrengthReduce, "loop-reduce",<br>                 "Loop Strength Reduction", false, false)<br> INITIALIZE_AG_DEPENDENCY(TargetTransformInfo)<br> INITIALIZE_PASS_DEPENDENCY(DominatorTree)<br>+INITIALIZE_PASS_DEPENDENCY(MemoryDependenceAnalysis)<br> INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)<br> INITIALIZE_PASS_DEPENDENCY(IVUsers)<br> INITIALIZE_PASS_DEPENDENCY(LoopInfo)<br>@@ -4901,6 +4903,8 @@ void LoopStrengthReduce::getAnalysisUsage(AnalysisUsage &AU) const {<br>   AU.addRequiredID(LoopSimplifyID);<br>   AU.addRequired<DominatorTree>();<br>   AU.addPreserved<DominatorTree>();<br>+  AU.addRequired<MemoryDependenceAnalysis>();<br>+  AU.addPreserved<MemoryDependenceAnalysis>();<br>   AU.addRequired<ScalarEvolution>();<br>   AU.addPreserved<ScalarEvolution>();<br>   // Requiring LoopSimplify a second time here prevents IVUsers from running<br><br>Thanks,<br>Star Tan