Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
[oota-llvm.git] / include / llvm / Analysis / LoopInfo.h
index a81b674fba54f93eed06c6393f758879c0237e68..238a0f627d470d1ed7a625eb759b575f2c1735d7 100644 (file)
@@ -35,7 +35,7 @@
 
 namespace llvm {
 
-struct ETForest;
+class ETForest;
 class LoopInfo;
 class PHINode;
 class Instruction;
@@ -107,6 +107,12 @@ public:
   // induction variable canonicalization pass should be used to normalize loops
   // for easy analysis.  These methods assume canonical loops.
 
+  /// getExitingBlocks - Return all blocks inside the loop that have successors
+  /// 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;
+
   /// getExitBlocks - Return all of the successor blocks of this loop.  These
   /// are the blocks _outside of the current loop_ which are branched to.
   ///
@@ -211,6 +217,9 @@ public:
   /// the mapping in the LoopInfo class.
   void removeBlockFromLoop(BasicBlock *BB);
 
+  void print(OStream &O, unsigned Depth = 0) const {
+    if (O.stream()) print(*O.stream(), Depth);
+  }
   void print(std::ostream &O, unsigned Depth = 0) const;
   void dump() const;
 private:
@@ -274,6 +283,9 @@ public:
   virtual bool runOnFunction(Function &F);
 
   virtual void releaseMemory();
+  void print(OStream &O, const Module* = 0) const {
+    if (O.stream()) print(*O.stream());
+  }
   void print(std::ostream &O, const Module* = 0) const;
 
   virtual void getAnalysisUsage(AnalysisUsage &AU) const;