diff --git a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
index d8ae1de..c7fb42d 100644
--- a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
@@ -344,8 +344,9 @@
 #endif
       
       // Handle self recursion by resolving the arguments and return value
-      Graph.mergeInGraph(CS, GI, DSGraph::StripAllocaBit |
-                         DSGraph::DontCloneCallNodes);
+      Graph.mergeInGraph(CS, GI,
+                         DSGraph::KeepModRefBits | 
+                         DSGraph::StripAllocaBit | DSGraph::DontCloneCallNodes);
 
 #if 0
       Graph.writeGraphToFile(std::cerr, "bu_" + F.getName() + "_after_" +
@@ -424,7 +425,8 @@
             << GI.getAuxFunctionCalls().size() << "]\n");
 
       // Handle self recursion by resolving the arguments and return value
-      Graph.mergeInGraph(CS, GI, DSGraph::StripAllocaBit |
+      Graph.mergeInGraph(CS, GI,
+                         DSGraph::KeepModRefBits | DSGraph::StripAllocaBit |
                          DSGraph::DontCloneCallNodes);
     }
   }
@@ -508,7 +510,8 @@
               << GI.getAuxFunctionCalls().size() << "]\n");
         
         // Handle self recursion by resolving the arguments and return value
-        Graph.mergeInGraph(CS, GI, DSGraph::StripAllocaBit |
+        Graph.mergeInGraph(CS, GI,
+                           DSGraph::KeepModRefBits | DSGraph::StripAllocaBit |
                            DSGraph::DontCloneCallNodes);
 
         if (SCCFunctions.count(Callee))
diff --git a/llvm/lib/Analysis/DataStructure/DataStructure.cpp b/llvm/lib/Analysis/DataStructure/DataStructure.cpp
index fe72bfe..d26213f 100644
--- a/llvm/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/llvm/lib/Analysis/DataStructure/DataStructure.cpp
@@ -598,9 +598,14 @@
     Nodes[i]->remapLinks(OldNodeMap);
 
   // Remove alloca markers as specified
-  if (CloneFlags & StripAllocaBit)
+  if (CloneFlags & (StripAllocaBit | StripModRefBits)) {
+    unsigned short clearBits =   (CloneFlags & StripAllocaBit
+                                  ? DSNode::AllocaNode : 0)
+                               | (CloneFlags & StripModRefBits
+                                  ? (DSNode::Modified | DSNode::Read) : 0);
     for (unsigned i = FN, e = Nodes.size(); i != e; ++i)
-      Nodes[i]->NodeType &= ~DSNode::AllocaNode;
+      Nodes[i]->NodeType &= ~clearBits;
+  }
 
   // Copy the value map... and merge all of the global nodes...
   for (std::map<Value*, DSNodeHandle>::const_iterator I = G.ScalarMap.begin(),
diff --git a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
index aa9a6a9..da9bc7c 100644
--- a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -100,7 +100,7 @@
   const std::vector<DSCallSite> &CallSites = Graph.getFunctionCalls();
   if (CallSites.empty()) {
     DEBUG(std::cerr << "  [TD] No callees for: " << F.getName() << "\n");
-    return;  // If no call sites, the graph is the same as the BU graph!
+    return;  // If no call sites, there is nothing more to do here
   }
 
   // Loop over all of the call sites, building a multi-map from Callees to
@@ -143,9 +143,10 @@
       std::map<Value*, DSNodeHandle> OldValMap;
       std::map<const DSNode*, DSNodeHandle> OldNodeMap;
       CG.cloneInto(Graph, OldValMap, OldNodeMap,
+                   DSGraph::StripModRefBits |
                    DSGraph::KeepAllocaBit | DSGraph::DontCloneCallNodes);
       OldValMap.clear();  // We don't care about the ValMap
-      
+
       // Loop over all of the invocation sites of the callee, resolving
       // arguments to our graph.  This loop may iterate multiple times if the
       // current function calls this callee multiple times with different
