* Fix a bug introduced in the last checkin wrt Stack markers

* Make cloning more efficient in the process...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5479 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-02-03 20:08:51 +00:00
parent 3a35254960
commit 1e88369afe

View File

@ -599,10 +599,15 @@ DSNodeHandle DSGraph::cloneInto(const DSGraph &G,
// Duplicate all of the nodes, populating the node map...
Nodes.reserve(FN+G.Nodes.size());
// Remove alloca or mod/ref bits as specified...
unsigned clearBits = (CloneFlags & StripAllocaBit ? DSNode::AllocaNode : 0)
| (CloneFlags & StripModRefBits ? (DSNode::Modified | DSNode::Read) : 0);
clearBits |= DSNode::DEAD; // Clear dead flag...
for (unsigned i = 0, e = G.Nodes.size(); i != e; ++i) {
DSNode *Old = G.Nodes[i];
DSNode *New = new DSNode(*Old);
New->NodeType &= ~DSNode::DEAD; // Clear dead flag...
New->NodeType &= ~clearBits;
Nodes.push_back(New);
OldNodeMap[Old] = New;
}
@ -615,13 +620,6 @@ DSNodeHandle DSGraph::cloneInto(const DSGraph &G,
for (unsigned i = FN, e = Nodes.size(); i != e; ++i)
Nodes[i]->remapLinks(OldNodeMap);
// Remove alloca markers as specified
if (CloneFlags & (StripAllocaBit | StripModRefBits)) {
unsigned clearBits = (CloneFlags & StripAllocaBit ? DSNode::AllocaNode : 0)
| (CloneFlags & StripModRefBits ? (DSNode::Modified | DSNode::Read) : 0);
maskNodeTypes(~clearBits);
}
// Copy the scalar map... merging all of the global nodes...
for (hash_map<Value*, DSNodeHandle>::const_iterator I = G.ScalarMap.begin(),
E = G.ScalarMap.end(); I != E; ++I) {