diff options
author | Duncan Sands <baldrick@free.fr> | 2008-09-08 11:07:35 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2008-09-08 11:07:35 +0000 |
commit | 34c8847b2d27433ec7b81c824b66771e7665873a (patch) | |
tree | af9d31831d43b3fc9041478408a3b0fcd3c9de36 /lib | |
parent | d7b9851c4e634ed3599b1a4c70b1c76c90a11686 (diff) | |
download | external_llvm-34c8847b2d27433ec7b81c824b66771e7665873a.zip external_llvm-34c8847b2d27433ec7b81c824b66771e7665873a.tar.gz external_llvm-34c8847b2d27433ec7b81c824b66771e7665873a.tar.bz2 |
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')
-rw-r--r-- | lib/Transforms/IPO/ArgumentPromotion.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp index b508714..f3b29fe 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); |