diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/IPO/Inliner.cpp | 8 | ||||
-rw-r--r-- | lib/Transforms/Utils/InlineFunction.cpp | 10 |
2 files changed, 9 insertions, 9 deletions
diff --git a/lib/Transforms/IPO/Inliner.cpp b/lib/Transforms/IPO/Inliner.cpp index 4d4af72..b785bb0 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 c30f514..91390bc 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 |