From da230cb876edf0d4fa8eefc289b8addfb722cd07 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 1 Sep 2009 18:52:39 +0000 Subject: remove CallGraphNode::replaceCallSite, it is redundant with other APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80708 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/IPA/CallGraph.cpp | 22 ---------------------- lib/Analysis/IPA/CallGraphSCCPass.cpp | 2 +- lib/Transforms/IPO/ArgumentPromotion.cpp | 4 +++- lib/Transforms/IPO/StructRetPromotion.cpp | 4 +++- 4 files changed, 7 insertions(+), 25 deletions(-) (limited to 'lib') diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp index d70b7ab..645916e 100644 --- a/lib/Analysis/IPA/CallGraph.cpp +++ b/lib/Analysis/IPA/CallGraph.cpp @@ -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) diff --git a/lib/Analysis/IPA/CallGraphSCCPass.cpp b/lib/Analysis/IPA/CallGraphSCCPass.cpp index a7d1183..f7c38e2 100644 --- a/lib/Analysis/IPA/CallGraphSCCPass.cpp +++ b/lib/Analysis/IPA/CallGraphSCCPass.cpp @@ -228,7 +228,7 @@ void CGPassManager::RefreshCallGraph(std::vector &CurSCC, else CalleeNode = CG.getCallsExternalNode(); - CGN->replaceCallSite(CS, CS, CalleeNode); + ExistingIt->second = CalleeNode; MadeChange = true; continue; } diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp index b1f7f04..3c584c8 100644 --- a/lib/Transforms/IPO/ArgumentPromotion.cpp +++ b/lib/Transforms/IPO/ArgumentPromotion.cpp @@ -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); diff --git a/lib/Transforms/IPO/StructRetPromotion.cpp b/lib/Transforms/IPO/StructRetPromotion.cpp index 7cb4c9f..4442820 100644 --- a/lib/Transforms/IPO/StructRetPromotion.cpp +++ b/lib/Transforms/IPO/StructRetPromotion.cpp @@ -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(), -- cgit v1.1