Make PointerSize & Shift be enums
Fix problem with recursive merging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4570 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp
index 77407ad..740ece8 100644
--- a/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/lib/Analysis/DataStructure/DataStructure.cpp
@@ -20,11 +20,6 @@
   Statistic<> NumFolds("dsnode", "Number of nodes completely folded");
 };
 
-namespace DS {
-  const unsigned PointerShift = 3;  // 64bit ptrs = 3, 32 bit ptrs = 2
-  const unsigned PointerSize = 1 << PointerShift;
-};
-
 namespace DataStructureAnalysis {   // TODO: FIXME
   // isPointerType - Return true if this first class type is big enough to hold
   // a pointer.
@@ -392,7 +387,7 @@
   }
   N = NH.getNode();
 
-  if (this == N) return;
+  if (this == N || N == 0) return;
 
   // If both nodes are not at offset 0, make sure that we are merging the node
   // at an later offset into the node with the zero offset.