diff --git a/lib/Analysis/DataStructure/BottomUpClosure.cpp b/lib/Analysis/DataStructure/BottomUpClosure.cpp
index cbe53ce..ed9336d 100644
--- a/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/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/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp
index 41cd718..31ff0a9 100644
--- a/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/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/lib/Analysis/DataStructure/TopDownClosure.cpp b/lib/Analysis/DataStructure/TopDownClosure.cpp
index 817e734..a37ccd9 100644
--- a/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/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));
   }
 
