mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
* 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:
parent
3a35254960
commit
1e88369afe
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user