Add a flag to mark a dirty cache entry. This is not yet used, but will eventually
[oota-llvm.git] / include / llvm / Analysis / LoopInfo.h
index b332fd1f97c5979f0233e40bff17483697432c0f..acb5fd6c7a4a23b022574fbdc4e0549ef1dd5e05 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "llvm/Pass.h"
 #include "llvm/ADT/GraphTraits.h"
+#include "llvm/ADT/SmallVector.h"
 
 namespace llvm {
 
@@ -111,18 +112,18 @@ public:
   /// outside of the loop.  These are the blocks _inside of the current loop_
   /// which branch out.  The returned list is always unique.
   ///
-  void getExitingBlocks(std::vector<BasicBlock*> &Blocks) const;
+  void getExitingBlocks(SmallVectorImpl<BasicBlock *> &Blocks) const;
 
   /// getExitBlocks - Return all of the successor blocks of this loop.  These
   /// are the blocks _outside of the current loop_ which are branched to.
   ///
-  void getExitBlocks(std::vector<BasicBlock*> &Blocks) const;
+  void getExitBlocks(SmallVectorImpl<BasicBlock* > &Blocks) const;
 
   /// getUniqueExitBlocks - Return all unique successor blocks of this loop. 
   /// These are the blocks _outside of the current loop_ which are branched to.
   /// This assumes that loop is in canonical form.
   ///
-  void getUniqueExitBlocks(std::vector<BasicBlock*> &ExitBlocks) const;
+  void getUniqueExitBlocks(SmallVectorImpl<BasicBlock*> &ExitBlocks) const;
 
   /// getLoopPreheader - If there is a preheader for this loop, return it.  A
   /// loop has a preheader if there is only one edge to the header of the loop
@@ -217,6 +218,9 @@ public:
   /// the mapping in the LoopInfo class.
   void removeBlockFromLoop(BasicBlock *BB);
 
+  /// verifyLoop - Verify loop structure
+  void verifyLoop() const;
+
   void print(std::ostream &O, unsigned Depth = 0) const;
   void print(std::ostream *O, unsigned Depth = 0) const {
     if (O) print(*O, Depth);
@@ -243,7 +247,7 @@ class LoopInfo : public FunctionPass {
 public:
   static char ID; // Pass identification, replacement for typeid
 
-  LoopInfo() : FunctionPass((intptr_t)&ID) {}
+  LoopInfo() : FunctionPass(intptr_t(&ID)) {}
   ~LoopInfo() { releaseMemory(); }
 
   /// iterator/begin/end - The interface to the top-level loops in the current