diff --git a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
index cbe53ce..ed9336d 100644
--- a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp
@@ -93,7 +93,7 @@
             DEBUG(std::cerr << "\t[BU] Self Inlining: " << F.getName() << "\n");
 
             // Handle self recursion by resolving the arguments and return value
-            Graph->mergeInGraph(Call, *Graph, true);
+            Graph->mergeInGraph(Call, *Graph, DSGraph::StripAllocaBit);
 
             // Erase the entry in the callees vector
             Callees.erase(Callees.begin()+c--);
@@ -120,7 +120,7 @@
             CallSitesForFunc.back().setCallee(0);
 
             // Handle self recursion by resolving the arguments and return value
-            Graph->mergeInGraph(Call, GI, true);
+            Graph->mergeInGraph(Call, GI, DSGraph::StripAllocaBit);
 
             // Erase the entry in the Callees vector
             Callees.erase(Callees.begin()+c--);
diff --git a/llvm/lib/Analysis/DataStructure/DataStructure.cpp b/llvm/lib/Analysis/DataStructure/DataStructure.cpp
index 41cd718..31ff0a9 100644
--- a/llvm/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/llvm/lib/Analysis/DataStructure/DataStructure.cpp
@@ -526,7 +526,7 @@
 DSNodeHandle DSGraph::cloneInto(const DSGraph &G, 
                                 std::map<Value*, DSNodeHandle> &OldValMap,
                                 std::map<const DSNode*, DSNode*> &OldNodeMap,
-                                bool StripAllocas) {
+                                AllocaBit StripAllocas) {
   assert(OldNodeMap.empty() && "Returned OldNodeMap should be empty!");
 
   unsigned FN = Nodes.size();           // First new node...
@@ -544,11 +544,10 @@
   for (unsigned i = FN, e = Nodes.size(); i != e; ++i)
     Nodes[i]->remapLinks(OldNodeMap);
 
-  // Remove local markers as specified
-  unsigned char StripBits = StripAllocas ? DSNode::AllocaNode : 0;
-  if (StripBits)
+  // Remove alloca markers as specified
+  if (StripAllocas == StripAllocaBit)
     for (unsigned i = FN, e = Nodes.size(); i != e; ++i)
-      Nodes[i]->NodeType &= ~StripBits;
+      Nodes[i]->NodeType &= ~DSNode::AllocaNode;
 
   // Copy the value map... and merge all of the global nodes...
   for (std::map<Value*, DSNodeHandle>::const_iterator I = G.ScalarMap.begin(),
@@ -580,7 +579,7 @@
 /// graph.
 ///
 void DSGraph::mergeInGraph(DSCallSite &CS, const DSGraph &Graph,
-                           bool StripAllocas) {
+                           AllocaBit StripAllocas) {
   std::map<Value*, DSNodeHandle> OldValMap;
   DSNodeHandle RetVal;
   std::map<Value*, DSNodeHandle> *ScalarMap = &OldValMap;
diff --git a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
index 817e734..a37ccd9 100644
--- a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -177,7 +177,7 @@
     // Strip scalars but not allocas since they are alive in callee.
     // 
     DSNodeHandle RetVal = Graph->cloneInto(CG, OldValMap, OldNodeMap,
-                                           /*StripAllocas*/ false);
+                                           DSGraph::KeepAllocaBit);
     ResolveCallSite(*Graph, DSCallSite(CallSiteInCG, OldNodeMap));
   }
 
