[PM] Split the LoopInfo object apart from the legacy pass, creating
[oota-llvm.git] / lib / Transforms / Utils / SimplifyIndVar.cpp
index d54c09aa6ae4326588233b28c1f760bb69e66796..e3e0c2fc6f3be647ee68978cf0086624a2292d89 100644 (file)
@@ -55,15 +55,10 @@ namespace {
     bool Changed;
 
   public:
     bool Changed;
 
   public:
-    SimplifyIndvar(Loop *Loop, ScalarEvolution *SE, LPPassManager *LPM,
-                   SmallVectorImpl<WeakVH> &Dead, IVUsers *IVU = nullptr) :
-      L(Loop),
-      LI(LPM->getAnalysisIfAvailable<LoopInfo>()),
-      SE(SE),
-      DeadInsts(Dead),
-      Changed(false) {
-      DataLayoutPass *DLP = LPM->getAnalysisIfAvailable<DataLayoutPass>();
-      DL = DLP ? &DLP->getDataLayout() : nullptr;
+    SimplifyIndvar(Loop *Loop, ScalarEvolution *SE, LoopInfo *LI,
+                   const DataLayout *DL, SmallVectorImpl<WeakVH> &Dead,
+                   IVUsers *IVU = nullptr)
+        : L(Loop), LI(LI), SE(SE), DL(DL), DeadInsts(Dead), Changed(false) {
       assert(LI && "IV simplification requires LoopInfo");
     }
 
       assert(LI && "IV simplification requires LoopInfo");
     }
 
@@ -562,8 +557,10 @@ void IVVisitor::anchor() { }
 bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, LPPassManager *LPM,
                        SmallVectorImpl<WeakVH> &Dead, IVVisitor *V)
 {
 bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, LPPassManager *LPM,
                        SmallVectorImpl<WeakVH> &Dead, IVVisitor *V)
 {
-  LoopInfo *LI = &LPM->getAnalysis<LoopInfo>();
-  SimplifyIndvar SIV(LI->getLoopFor(CurrIV->getParent()), SE, LPM, Dead);
+  DataLayoutPass *DLP = LPM->getAnalysisIfAvailable<DataLayoutPass>();
+  LoopInfo *LI = &LPM->getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
+  SimplifyIndvar SIV(LI->getLoopFor(CurrIV->getParent()), SE, LI,
+                     DLP ? &DLP->getDataLayout() : nullptr, Dead);
   SIV.simplifyUsers(CurrIV, V);
   return SIV.hasChanged();
 }
   SIV.simplifyUsers(CurrIV, V);
   return SIV.hasChanged();
 }