diff --git a/llvm/lib/Analysis/LoopDepth.cpp b/llvm/lib/Analysis/LoopDepth.cpp
new file mode 100644
index 0000000..67576e2
--- /dev/null
+++ b/llvm/lib/Analysis/LoopDepth.cpp
@@ -0,0 +1,46 @@
+//===- LoopDepth.cpp - Loop Dpeth Calculation --------------------*- C++ -*--=//
+//
+// This file provides a simple class to calculate the loop depth of a 
+// BasicBlock.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Analysis/LoopDepth.h"
+#include "llvm/Analysis/IntervalPartition.h"
+#include "llvm/Tools/STLExtras.h"
+#include <algorithm>
+
+inline void LoopDepthCalculator::AddBB(const BasicBlock *BB) {
+  ++LoopDepth[BB];   // Increment the loop depth count for the specified BB
+}
+
+inline void LoopDepthCalculator::ProcessInterval(cfg::Interval *I) {
+  if (!I->isLoop()) return;  // Ignore nonlooping intervals...
+
+  for_each(I->Nodes.begin(), I->Nodes.end(), 
+	   bind_obj(this, &LoopDepthCalculator::AddBB));
+}
+
+LoopDepthCalculator::LoopDepthCalculator(Method *M) {
+  //map<const BasicBlock*, unsigned> LoopDepth;
+
+  cfg::IntervalPartition *IP = new cfg::IntervalPartition(M);
+  while (!IP->isDegeneratePartition()) {
+    for_each(IP->begin(), IP->end(), 
+	     bind_obj(this, &LoopDepthCalculator::ProcessInterval));
+
+    // Calculate the reduced version of this graph until we get to an 
+    // irreducible graph or a degenerate graph...
+    //
+    cfg::IntervalPartition *NewIP = new cfg::IntervalPartition(*IP, true);
+    if (NewIP->size() == IP->size()) {
+      cerr << "IRREDUCIBLE GRAPH FOUND!!!\n";
+      // TODO: fix irreducible graph
+      return;
+    }
+    delete IP;
+    IP = NewIP;
+  }
+
+  delete IP;
+}
