remove CallGraphNode::replaceCallSite, it is redundant with other APIs.

llvm-svn: 80708
This commit is contained in:
Chris Lattner 2009-09-01 18:52:39 +00:00
parent d7797754d4
commit 9b463729d7
5 changed files with 7 additions and 30 deletions

View File

@ -270,11 +270,6 @@ public:
/// removeOneAbstractEdgeTo - Remove one edge associated with a null callsite
/// from this node to the specified callee function.
void removeOneAbstractEdgeTo(CallGraphNode *Callee);
/// replaceCallSite - Make the edge in the node for Old CallSite be for
/// New CallSite instead. Note that this method takes linear time, so it
/// should be used sparingly.
void replaceCallSite(CallSite Old, CallSite New, CallGraphNode *NewCallee);
};
//===----------------------------------------------------------------------===//

View File

@ -279,27 +279,5 @@ void CallGraphNode::removeOneAbstractEdgeTo(CallGraphNode *Callee) {
}
}
/// replaceCallSite - Make the edge in the node for Old CallSite be for
/// New CallSite instead. Note that this method takes linear time, so it
/// should be used sparingly.
void CallGraphNode::replaceCallSite(CallSite Old, CallSite New,
CallGraphNode *NewCallee) {
for (CalledFunctionsVector::iterator I = CalledFunctions.begin(); ; ++I) {
assert(I != CalledFunctions.end() && "Cannot find callsite to replace!");
if (I->first != Old.getInstruction()) continue;
I->first = New.getInstruction();
// If the callee is changing, not just the callsite, then update it as
// well.
if (NewCallee) {
I->second->DropRef();
I->second = NewCallee;
I->second->AddRef();
}
return;
}
}
// Enuse that users of CallGraph.h also link with this file
DEFINING_FILE_FOR(CallGraph)

View File

@ -228,7 +228,7 @@ void CGPassManager::RefreshCallGraph(std::vector<CallGraphNode*> &CurSCC,
else
CalleeNode = CG.getCallsExternalNode();
CGN->replaceCallSite(CS, CS, CalleeNode);
ExistingIt->second = CalleeNode;
MadeChange = true;
continue;
}

View File

@ -728,7 +728,9 @@ CallGraphNode *ArgPromotion::DoPromotion(Function *F,
AA.replaceWithNewValue(Call, New);
// Update the callgraph to know that the callsite has been transformed.
CG[Call->getParent()->getParent()]->replaceCallSite(Call, New, NF_CGN);
CallGraphNode *CalleeNode = CG[Call->getParent()->getParent()];
CalleeNode->removeCallEdgeFor(Call);
CalleeNode->addCalledFunction(New, NF_CGN);
if (!Call->use_empty()) {
Call->replaceAllUsesWith(New);

View File

@ -321,7 +321,9 @@ CallGraphNode *SRETPromotion::updateCallSites(Function *F, Function *NF) {
New->takeName(Call);
// Update the callgraph to know that the callsite has been transformed.
CG[Call->getParent()->getParent()]->replaceCallSite(Call, New, NF_CGN);
CallGraphNode *CalleeNode = CG[Call->getParent()->getParent()];
CalleeNode->removeCallEdgeFor(Call);
CalleeNode->addCalledFunction(New, NF_CGN);
// Update all users of sret parameter to extract value using extractvalue.
for (Value::use_iterator UI = FirstCArg->use_begin(),