Add a DominatorTree argument to isLCSSA so that it doesn't have to
compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98179 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp
index 2139c29..1001d2b 100644
--- a/lib/Analysis/LoopInfo.cpp
+++ b/lib/Analysis/LoopInfo.cpp
@@ -263,14 +263,7 @@
 }
 
 /// isLCSSAForm - Return true if the Loop is in LCSSA form
-bool Loop::isLCSSAForm() const {
-  // Collect all the reachable blocks in the function, for fast lookups.
-  SmallPtrSet<BasicBlock *, 32> ReachableBBs;
-  BasicBlock *EntryBB = getHeader()->getParent()->begin();
-  for (df_iterator<BasicBlock *> NI = df_begin(EntryBB),
-       NE = df_end(EntryBB); NI != NE; ++NI)
-    ReachableBBs.insert(*NI);
-
+bool Loop::isLCSSAForm(DominatorTree &DT) const {
   // Sort the blocks vector so that we can use binary search to do quick
   // lookups.
   SmallPtrSet<BasicBlock *, 16> LoopBBs(block_begin(), block_end());
@@ -290,7 +283,7 @@
         // entry are special; uses in them don't need to go through PHIs.
         if (UserBB != BB &&
             !LoopBBs.count(UserBB) &&
-            ReachableBBs.count(UserBB))
+            DT.isReachableFromEntry(UserBB))
           return false;
       }
   }