summaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
diff options
context:
space:
mode:
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);