* Nodes now keep track of any global variables in them
authorChris Lattner <sabre@nondot.org>
Thu, 11 Jul 2002 20:32:22 +0000 (20:32 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 11 Jul 2002 20:32:22 +0000 (20:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2879 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/DataStructure.cpp

index 84e2cfbc47e4d2bc0c3ef572b470dc01592bc0b4..dd0b52a4383470a0a1ade2d11cbce888480a7c5c 100644 (file)
@@ -37,6 +37,16 @@ void DSNode::removeReferrer(DSNodeHandle *H) {
   Referrers.erase(I.base()-1);
 }
 
+// addGlobal - Add an entry for a global value to the Globals list.  This also
+// marks the node with the 'G' flag if it does not already have it.
+//
+void DSNode::addGlobal(GlobalValue *GV) {
+  assert(GV->getType()->getElementType() == Ty);
+  Globals.push_back(GV);
+  NodeType |= GlobalNode;
+}
+
+
 // addEdgeTo - Add an edge from the current node to the specified node.  This
 // can cause merging of nodes in the graph.
 //
@@ -74,8 +84,13 @@ void DSNode::mergeWith(DSNode *N) {
     N->Links[i] = 0;  // Reduce unneccesary edges in graph. N is dead
   }
 
+  // Merge the node types
   NodeType |= N->NodeType;
   N->NodeType = 0;   // N is now a dead node.
+
+  // Merge the globals list...
+  Globals.insert(Globals.end(), N->Globals.begin(), N->Globals.end());
+  N->Globals.clear();
 }
 
 //===----------------------------------------------------------------------===//