diff --git a/llvm/lib/Analysis/DataStructure/DataStructure.cpp b/llvm/lib/Analysis/DataStructure/DataStructure.cpp
index 043579c..9673043 100644
--- a/llvm/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/llvm/lib/Analysis/DataStructure/DataStructure.cpp
@@ -29,6 +29,15 @@
   Statistic<> NumCallNodesMerged("dsnode", "Number of call nodes merged");
 };
 
+#if 0
+#define TIME_REGION(VARNAME, DESC) \
+   NamedRegionTimer VARNAME(DESC)
+#else
+#define TIME_REGION(VARNAME, DESC)
+#endif
+
+
+
 using namespace DS;
 
 DSNode *DSNodeHandle::HandleForwarding() const {
@@ -929,6 +938,7 @@
 void DSGraph::cloneInto(const DSGraph &G, ScalarMapTy &OldValMap,
                         ReturnNodesTy &OldReturnNodes, NodeMapTy &OldNodeMap,
                         unsigned CloneFlags) {
+  TIME_REGION(X, "cloneInto");
   assert(OldNodeMap.empty() && "Returned OldNodeMap should be empty!");
   assert(&G != this && "Cannot clone graph into itself!");
 
@@ -956,6 +966,8 @@
   for (unsigned i = FN, e = Nodes.size(); i != e; ++i)
     Nodes[i]->remapLinks(OldNodeMap);
 
+  { TIME_REGION(X, "cloneInto:scalars");
+
   // Copy the scalar map... merging all of the global nodes...
   for (ScalarMapTy::const_iterator I = G.ScalarMap.begin(),
          E = G.ScalarMap.end(); I != E; ++I) {
@@ -970,6 +982,7 @@
       InlinedGlobals.insert(GV);
     }
   }
+  }
 
   if (!(CloneFlags & DontCloneCallNodes)) {
     // Copy the function calls list...
@@ -1017,6 +1030,7 @@
                                  NodeMapTy &OldNodeMap,
                                  unsigned CloneFlags) {
 
+  TIME_REGION(X, "clonePartiallyInto");
   assert(OldNodeMap.empty() && "Returned OldNodeMap should be empty!");
   assert(&G != this && "Cannot clone graph into itself!");
 
@@ -1359,6 +1373,8 @@
 // we don't have to perform any non-trivial analysis here.
 //
 void DSGraph::removeTriviallyDeadNodes() {
+  TIME_REGION(X, "removeTriviallyDeadNodes");
+
   removeIdenticalCalls(FunctionCalls);
   removeIdenticalCalls(AuxFunctionCalls);
 
@@ -1547,6 +1563,8 @@
   // merging...
   removeTriviallyDeadNodes();
 
+  TIME_REGION(X, "removeDeadNodes");
+
   // FIXME: Merge non-trivially identical call nodes...
 
   // Alive - a set that holds all nodes found to be reachable/alive.
