summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-05-01 01:26:13 +0000
committerChris Lattner <sabre@nondot.org>2010-05-01 01:26:13 +0000
commitc2432b9d441dfbe98863b308a6f9dc65b6adc3d9 (patch)
tree420e00c46fc04e0bc094fd134635c734af549995 /llvm
parentfc8d9ee6c392a3d4badf588ee0415fac23494a4c (diff)
downloadbcm5719-llvm-c2432b9d441dfbe98863b308a6f9dc65b6adc3d9.tar.gz
bcm5719-llvm-c2432b9d441dfbe98863b308a6f9dc65b6adc3d9.zip
rename InlineInfo.DevirtualizedCalls -> InlinedCalls to
reflect that it includes all inlined calls now, not just devirtualized ones. llvm-svn: 102824
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Transforms/Utils/Cloning.h9
-rw-r--r--llvm/lib/Transforms/IPO/Inliner.cpp8
-rw-r--r--llvm/lib/Transforms/Utils/InlineFunction.cpp10
3 files changed, 13 insertions, 14 deletions
diff --git a/llvm/include/llvm/Transforms/Utils/Cloning.h b/llvm/include/llvm/Transforms/Utils/Cloning.h
index 463c5d48e9e..22bdc99ac18 100644
--- a/llvm/include/llvm/Transforms/Utils/Cloning.h
+++ b/llvm/include/llvm/Transforms/Utils/Cloning.h
@@ -176,14 +176,13 @@ public:
/// get copied into the caller.
SmallVector<AllocaInst*, 4> StaticAllocas;
- /// DevirtualizedCalls - InlineFunction fills this in with callsites that were
- /// inlined from the callee that went from being indirect calls to direct
- /// calls due to inlining. This is only filled in if CG is non-null.
- SmallVector<WeakVH, 2> DevirtualizedCalls;
+ /// InlinedCalls - InlineFunction fills this in with callsites that were
+ /// inlined from the callee. This is only filled in if CG is non-null.
+ SmallVector<WeakVH, 8> InlinedCalls;
void reset() {
StaticAllocas.clear();
- DevirtualizedCalls.clear();
+ InlinedCalls.clear();
}
};
diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp b/llvm/lib/Transforms/IPO/Inliner.cpp
index 4d4af727576..b785bb0a939 100644
--- a/llvm/lib/Transforms/IPO/Inliner.cpp
+++ b/llvm/lib/Transforms/IPO/Inliner.cpp
@@ -420,17 +420,17 @@ bool Inliner::runOnSCC(CallGraphSCC &SCC) {
continue;
++NumInlined;
- // If inlining this function devirtualized any call sites, throw them
+ // If inlining this function gave us any new call sites, throw them
// onto our worklist to process. They are useful inline candidates.
- if (!InlineInfo.DevirtualizedCalls.empty()) {
+ if (!InlineInfo.InlinedCalls.empty()) {
// Create a new inline history entry for this, so that we remember
// that these new callsites came about due to inlining Callee.
int NewHistoryID = InlineHistory.size();
InlineHistory.push_back(std::make_pair(Callee, InlineHistoryID));
- for (unsigned i = 0, e = InlineInfo.DevirtualizedCalls.size();
+ for (unsigned i = 0, e = InlineInfo.InlinedCalls.size();
i != e; ++i) {
- Value *Ptr = InlineInfo.DevirtualizedCalls[i];
+ Value *Ptr = InlineInfo.InlinedCalls[i];
CallSites.push_back(std::make_pair(CallSite(Ptr), NewHistoryID));
}
}
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp
index c30f51444b4..91390bc7bec 100644
--- a/llvm/lib/Transforms/Utils/InlineFunction.cpp
+++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp
@@ -201,7 +201,11 @@ static void UpdateCallGraphAfterInlining(CallSite CS,
// add. Check for this case.
Instruction *NewCall = dyn_cast<Instruction>(VMI->second);
if (NewCall == 0) continue;
-
+
+ // Remember that this call site got inlined for the client of
+ // InlineFunction.
+ IFI.InlinedCalls.push_back(NewCall);
+
// It's possible that inlining the callsite will cause it to go from an
// indirect to a direct call by resolving a function pointer. If this
// happens, set the callee of the new call site to a more precise
@@ -212,14 +216,10 @@ static void UpdateCallGraphAfterInlining(CallSite CS,
// Indirect call site resolved to direct call.
CallerNode->addCalledFunction(CallSite::get(NewCall), CG[F]);
- // Remember that this callsite got devirtualized for the client of
- // InlineFunction.
- IFI.DevirtualizedCalls.push_back(NewCall);
continue;
}
CallerNode->addCalledFunction(CallSite::get(NewCall), I->second);
- IFI.DevirtualizedCalls.push_back(NewCall);
}
// Update the call graph by deleting the edge from Callee to Caller. We must
OpenPOWER on IntegriCloud