Moved printing code to the Assembly/Writer library.
Code now detects looping intervals


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/Writer.cpp b/lib/Analysis/Writer.cpp
new file mode 100644
index 0000000..3abe70a
--- /dev/null
+++ b/lib/Analysis/Writer.cpp
@@ -0,0 +1,28 @@
+//===-- IntervalWriter.cpp - Library for printing Intervals ------*- C++ -*--=//
+//
+// This library implements the interval printing functionality defined in 
+// llvm/Assembly/Writer.h
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Assembly/Writer.h"
+#include "llvm/Analysis/Intervals.h"
+#include <iterator>
+#include <algorithm>
+
+void cfg::WriteToOutput(const Interval *I, ostream &o) {
+  o << "-------------------------------------------------------------\n"
+       << "Interval Contents:\n";
+  
+  // Print out all of the basic blocks in the interval...
+  copy(I->Nodes.begin(), I->Nodes.end(), 
+       ostream_iterator<BasicBlock*>(o, "\n"));
+
+  o << "Interval Predecessors:\n";
+  copy(I->Predecessors.begin(), I->Predecessors.end(), 
+       ostream_iterator<BasicBlock*>(o, "\n"));
+  
+  o << "Interval Successors:\n";
+  copy(I->Successors.begin(), I->Successors.end(), 
+       ostream_iterator<BasicBlock*>(o, "\n"));
+}