diff options
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/Inliner.cpp | 18 | 
1 files changed, 18 insertions, 0 deletions
| diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp b/llvm/lib/Transforms/IPO/Inliner.cpp index 1698e0ba486..3da0c2e83eb 100644 --- a/llvm/lib/Transforms/IPO/Inliner.cpp +++ b/llvm/lib/Transforms/IPO/Inliner.cpp @@ -793,6 +793,14 @@ bool LegacyInlinerBase::removeDeadFunctions(CallGraph &CG,    return true;  } +InlinerPass::~InlinerPass() { +  if (ImportedFunctionsStats) { +    assert(InlinerFunctionImportStats != InlinerFunctionImportStatsOpts::No); +    ImportedFunctionsStats->dump(InlinerFunctionImportStats == +                                 InlinerFunctionImportStatsOpts::Verbose); +  } +} +  PreservedAnalyses InlinerPass::run(LazyCallGraph::SCC &InitialC,                                     CGSCCAnalysisManager &AM, LazyCallGraph &CG,                                     CGSCCUpdateResult &UR) { @@ -804,6 +812,13 @@ PreservedAnalyses InlinerPass::run(LazyCallGraph::SCC &InitialC,    Module &M = *InitialC.begin()->getFunction().getParent();    ProfileSummaryInfo *PSI = MAM.getCachedResult<ProfileSummaryAnalysis>(M); +  if (!ImportedFunctionsStats && +      InlinerFunctionImportStats != InlinerFunctionImportStatsOpts::No) { +    ImportedFunctionsStats = +        llvm::make_unique<ImportedFunctionsInliningStatistics>(); +    ImportedFunctionsStats->setModuleInfo(M); +  } +    // We use a single common worklist for calls across the entire SCC. We    // process these in-order and append new calls introduced during inlining to    // the end. @@ -1009,6 +1024,9 @@ PreservedAnalyses InlinerPass::run(LazyCallGraph::SCC &InitialC,                Calls.push_back({CS, NewHistoryID});        } +      if (InlinerFunctionImportStats != InlinerFunctionImportStatsOpts::No) +        ImportedFunctionsStats->recordInline(F, Callee); +        // Merge the attributes based on the inlining.        AttributeFuncs::mergeAttributesForInlining(F, Callee); | 

