From f9ae4c5cb6b546b83a11d9e5d9da44179b2680d3 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 11 Jul 2002 20:32:22 +0000 Subject: [PATCH] * Nodes now keep track of any global variables in them git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2879 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/DataStructure/DataStructure.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp index 84e2cfbc47e..dd0b52a4383 100644 --- a/lib/Analysis/DataStructure/DataStructure.cpp +++ b/lib/Analysis/DataStructure/DataStructure.cpp @@ -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(); } //===----------------------------------------------------------------------===// -- 2.34.1