summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2008-09-08 11:07:35 +0000
committerDuncan Sands <baldrick@free.fr>2008-09-08 11:07:35 +0000
commit34c8847b2d27433ec7b81c824b66771e7665873a (patch)
treeaf9d31831d43b3fc9041478408a3b0fcd3c9de36 /lib/Transforms/IPO
parentd7b9851c4e634ed3599b1a4c70b1c76c90a11686 (diff)
downloadllvm-34c8847b2d27433ec7b81c824b66771e7665873a.tar.gz
llvm-34c8847b2d27433ec7b81c824b66771e7665873a.tar.bz2
llvm-34c8847b2d27433ec7b81c824b66771e7665873a.tar.xz
Update the callgraph correctly in ArgumentPromotion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55895 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r--lib/Transforms/IPO/ArgumentPromotion.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp
index b508714e85..f3b29fe61b 100644
--- a/lib/Transforms/IPO/ArgumentPromotion.cpp
+++ b/lib/Transforms/IPO/ArgumentPromotion.cpp
@@ -607,6 +607,10 @@ Function *ArgPromotion::DoPromotion(Function *F,
// changes.
AliasAnalysis &AA = getAnalysis<AliasAnalysis>();
+ // Get the callgraph information that we need to update to reflect our
+ // changes.
+ CallGraph &CG = getAnalysis<CallGraph>();
+
// Loop over all of the callers of the function, transforming the call sites
// to pass in the loaded pointers.
//
@@ -710,6 +714,9 @@ Function *ArgPromotion::DoPromotion(Function *F,
// the old call with a new one.
AA.replaceWithNewValue(Call, New);
+ // Update the callgraph to know that the callsite has been transformed.
+ CG[Call->getParent()->getParent()]->replaceCallSite(Call, New);
+
if (!Call->use_empty()) {
Call->replaceAllUsesWith(New);
New->takeName(Call);