summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-09-08 11:08:09 +0000
committerDuncan Sands <baldrick@free.fr>2008-09-08 11:08:09 +0000
commita9c3251e6bb6b8c1ebd2ba5119adfb21cbbc434f (patch)
tree71746c025bf36f8ffb84b65f1b96a0fa19a95ded /lib/Transforms/IPO
parent34c8847b2d27433ec7b81c824b66771e7665873a (diff)
downloadllvm-a9c3251e6bb6b8c1ebd2ba5119adfb21cbbc434f.tar.gz
llvm-a9c3251e6bb6b8c1ebd2ba5119adfb21cbbc434f.tar.bz2
llvm-a9c3251e6bb6b8c1ebd2ba5119adfb21cbbc434f.tar.xz
Update the callgraph correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55896 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r--lib/Transforms/IPO/StructRetPromotion.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Transforms/IPO/StructRetPromotion.cpp b/lib/Transforms/IPO/StructRetPromotion.cpp
index 2a7de3dc49..8e6415b2ab 100644
--- a/lib/Transforms/IPO/StructRetPromotion.cpp
+++ b/lib/Transforms/IPO/StructRetPromotion.cpp
@@ -252,7 +252,7 @@ Function *SRETPromotion::cloneFunctionBody(Function *F,
/// updateCallSites - Update all sites that call F to use NF.
void SRETPromotion::updateCallSites(Function *F, Function *NF) {
-
+ CallGraph &CG = getAnalysis<CallGraph>();
SmallVector<Value*, 16> Args;
// ParamAttrs - Keep track of the parameter attributes for the arguments.
@@ -303,6 +303,9 @@ void SRETPromotion::updateCallSites(Function *F, Function *NF) {
ArgAttrsVec.clear();
New->takeName(Call);
+ // Update the callgraph to know that the callsite has been transformed.
+ CG[Call->getParent()->getParent()]->replaceCallSite(Call, New);
+
// Update all users of sret parameter to extract value using extractvalue.
for (Value::use_iterator UI = FirstCArg->use_begin(),
UE = FirstCArg->use_end(); UI != UE; ) {