* Eliminate Scalar node type (renumber other node types)
authorChris Lattner <sabre@nondot.org>
Sat, 2 Nov 2002 00:11:12 +0000 (00:11 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 2 Nov 2002 00:11:12 +0000 (00:11 +0000)
* Allow DSNodeHandle::mergeWith to work if a node handle isn't pointing to a node yet

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4487 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/DSNode.h
include/llvm/Analysis/DataStructure/DSNode.h

index 1050ca738c044b3dcbdb123aeb2cc47d5315061d..0d5a0dfa38674f588bfa34a1e9ef0bb4abbcbccc 100644 (file)
@@ -62,13 +62,12 @@ class DSNode {
 public:
   enum NodeTy {
     ShadowNode = 0,        // Nothing is known about this node...
-    ScalarNode = 1 << 0,   // Scalar of the current function contains this value
-    AllocaNode = 1 << 1,   // This node was allocated with alloca
-    NewNode    = 1 << 2,   // This node was allocated with malloc
-    GlobalNode = 1 << 3,   // This node was allocated by a global var decl
-    Incomplete = 1 << 4,   // This node may not be complete
-    Modified   = 1 << 5,   // This node is modified in this context
-    Read       = 1 << 6,   // This node is read in this context
+    AllocaNode = 1 << 0,   // This node was allocated with alloca
+    NewNode    = 1 << 1,   // This node was allocated with malloc
+    GlobalNode = 1 << 2,   // This node was allocated by a global var decl
+    Incomplete = 1 << 3,   // This node may not be complete
+    Modified   = 1 << 4,   // This node is modified in this context
+    Read       = 1 << 5,   // This node is read in this context
   };
   
   /// NodeType - A union of the above bits.  "Shadow" nodes do not add any flags
@@ -294,8 +293,11 @@ inline void DSNodeHandle::addEdgeTo(unsigned LinkNo, const DSNodeHandle &Node) {
 /// pointed to by 'N'.
 ///
 inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) {
-  assert(N && "DSNodeHandle does not point to a node yet!");
-  N->mergeWith(Node, Offset);
+  if (N != 0)
+    N->mergeWith(Node, Offset);
+  else {   // No node to merge with, so just point to Node
+    *this = Node;
+  }
 }
 
 #endif
index 1050ca738c044b3dcbdb123aeb2cc47d5315061d..0d5a0dfa38674f588bfa34a1e9ef0bb4abbcbccc 100644 (file)
@@ -62,13 +62,12 @@ class DSNode {
 public:
   enum NodeTy {
     ShadowNode = 0,        // Nothing is known about this node...
-    ScalarNode = 1 << 0,   // Scalar of the current function contains this value
-    AllocaNode = 1 << 1,   // This node was allocated with alloca
-    NewNode    = 1 << 2,   // This node was allocated with malloc
-    GlobalNode = 1 << 3,   // This node was allocated by a global var decl
-    Incomplete = 1 << 4,   // This node may not be complete
-    Modified   = 1 << 5,   // This node is modified in this context
-    Read       = 1 << 6,   // This node is read in this context
+    AllocaNode = 1 << 0,   // This node was allocated with alloca
+    NewNode    = 1 << 1,   // This node was allocated with malloc
+    GlobalNode = 1 << 2,   // This node was allocated by a global var decl
+    Incomplete = 1 << 3,   // This node may not be complete
+    Modified   = 1 << 4,   // This node is modified in this context
+    Read       = 1 << 5,   // This node is read in this context
   };
   
   /// NodeType - A union of the above bits.  "Shadow" nodes do not add any flags
@@ -294,8 +293,11 @@ inline void DSNodeHandle::addEdgeTo(unsigned LinkNo, const DSNodeHandle &Node) {
 /// pointed to by 'N'.
 ///
 inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) {
-  assert(N && "DSNodeHandle does not point to a node yet!");
-  N->mergeWith(Node, Offset);
+  if (N != 0)
+    N->mergeWith(Node, Offset);
+  else {   // No node to merge with, so just point to Node
+    *this = Node;
+  }
 }
 
 #endif