mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-05 13:09:10 +00:00
Add a new method to make it easy to update graphs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20194 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5ad907a5e1
commit
d672ab936f
@ -245,8 +245,6 @@ public:
|
|||||||
afc_iterator afc_begin() const { return AuxFunctionCalls.begin(); }
|
afc_iterator afc_begin() const { return AuxFunctionCalls.begin(); }
|
||||||
afc_iterator afc_end() const { return AuxFunctionCalls.end(); }
|
afc_iterator afc_end() const { return AuxFunctionCalls.end(); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// getInlinedGlobals - Get the set of globals that are have been inlined
|
/// getInlinedGlobals - Get the set of globals that are have been inlined
|
||||||
/// (from callees in BU or from callers in TD) into the current graph.
|
/// (from callees in BU or from callers in TD) into the current graph.
|
||||||
///
|
///
|
||||||
@ -298,6 +296,16 @@ public:
|
|||||||
return Nodes.size();
|
return Nodes.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// addObjectToGraph - This method can be used to add global, stack, and heap
|
||||||
|
/// objects to the graph. This can be used when updating DSGraphs due to the
|
||||||
|
/// introduction of new temporary objects. The new object is not pointed to
|
||||||
|
/// and does not point to any other objects in the graph. Note that this
|
||||||
|
/// method initializes the type of the DSNode to the declared type of the
|
||||||
|
/// object if UseDeclaredType is true, otherwise it leaves the node type as
|
||||||
|
/// void.
|
||||||
|
DSNode *addObjectToGraph(Value *Ptr, bool UseDeclaredType = true);
|
||||||
|
|
||||||
|
|
||||||
/// print - Print a dot graph to the specified ostream...
|
/// print - Print a dot graph to the specified ostream...
|
||||||
///
|
///
|
||||||
void print(std::ostream &O) const;
|
void print(std::ostream &O) const;
|
||||||
|
@ -147,7 +147,6 @@ void DSNode::addGlobal(GlobalValue *GV) {
|
|||||||
std::lower_bound(Globals.begin(), Globals.end(), GV);
|
std::lower_bound(Globals.begin(), Globals.end(), GV);
|
||||||
|
|
||||||
if (I == Globals.end() || *I != GV) {
|
if (I == Globals.end() || *I != GV) {
|
||||||
//assert(GV->getType()->getElementType() == Ty);
|
|
||||||
Globals.insert(I, GV);
|
Globals.insert(I, GV);
|
||||||
NodeType |= GlobalNode;
|
NodeType |= GlobalNode;
|
||||||
}
|
}
|
||||||
@ -1141,6 +1140,29 @@ void DSGraph::updateFromGlobalGraph() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// addObjectToGraph - This method can be used to add global, stack, and heap
|
||||||
|
/// objects to the graph. This can be used when updating DSGraphs due to the
|
||||||
|
/// introduction of new temporary objects. The new object is not pointed to
|
||||||
|
/// and does not point to any other objects in the graph.
|
||||||
|
DSNode *DSGraph::addObjectToGraph(Value *Ptr, bool UseDeclaredType) {
|
||||||
|
assert(isa<PointerType>(Ptr->getType()) && "Ptr is not a pointer!");
|
||||||
|
const Type *Ty = cast<PointerType>(Ptr->getType())->getElementType();
|
||||||
|
DSNode *N = new DSNode(UseDeclaredType ? Ty : 0, this);
|
||||||
|
ScalarMap[Ptr] = N;
|
||||||
|
|
||||||
|
if (GlobalValue *GV = dyn_cast<GlobalValue>(Ptr)) {
|
||||||
|
N->addGlobal(GV);
|
||||||
|
} else if (MallocInst *MI = dyn_cast<MallocInst>(Ptr)) {
|
||||||
|
N->setHeapNodeMarker();
|
||||||
|
} else if (AllocaInst *AI = dyn_cast<AllocaInst>(Ptr)) {
|
||||||
|
N->setAllocaNodeMarker();
|
||||||
|
} else {
|
||||||
|
assert(0 && "Illegal memory object input!");
|
||||||
|
}
|
||||||
|
return N;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// cloneInto - Clone the specified DSGraph into the current graph. The
|
/// cloneInto - Clone the specified DSGraph into the current graph. The
|
||||||
/// translated ScalarMap for the old function is filled into the OldValMap
|
/// translated ScalarMap for the old function is filled into the OldValMap
|
||||||
/// member, and the translated ReturnNodes map is returned into ReturnNodes.
|
/// member, and the translated ReturnNodes map is returned into ReturnNodes.
|
||||||
|
Loading…
Reference in New Issue
Block a user