diff options
author | Chris Lattner <sabre@nondot.org> | 2010-05-01 01:26:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-05-01 01:26:13 +0000 |
commit | 0ca2f28458ae9122f413a4092ddcee33a9dd21c6 (patch) | |
tree | 465981912f7b0a91582dc7e26dd00ce71d8a1dc6 | |
parent | 6da12e6767100d3f874c2e05aae74e4fe24357b1 (diff) |
rename InlineInfo.DevirtualizedCalls -> InlinedCalls to
reflect that it includes all inlined calls now, not just
devirtualized ones.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102824 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Transforms/Utils/Cloning.h | 9 | ||||
-rw-r--r-- | lib/Transforms/IPO/Inliner.cpp | 8 | ||||
-rw-r--r-- | lib/Transforms/Utils/InlineFunction.cpp | 10 |
3 files changed, 13 insertions, 14 deletions
diff --git a/include/llvm/Transforms/Utils/Cloning.h b/include/llvm/Transforms/Utils/Cloning.h index 463c5d48e9..22bdc99ac1 100644 --- a/include/llvm/Transforms/Utils/Cloning.h +++ b/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/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp index 4d4af72757..b785bb0a93 100644 --- a/lib/Transforms/IPO/Inliner.cpp +++ b/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/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp index c30f51444b..91390bc7be 100644 --- a/lib/Transforms/Utils/InlineFunction.cpp +++ b/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 |