[llvm][NFC] Factored the default inlining advice

This is in preparation for the 'development' mode advisor. We currently
want to track what the default policy's decision would have been, this
refactoring makes it easier to do that.
This commit is contained in:
Mircea Trofin 2020-07-13 12:14:21 -07:00
parent 3780d3eb10
commit 11046ef69e
1 changed files with 13 additions and 5 deletions

View File

@ -84,7 +84,9 @@ private:
} // namespace
std::unique_ptr<InlineAdvice> DefaultInlineAdvisor::getAdvice(CallBase &CB) {
llvm::Optional<llvm::InlineCost>
getDefaultInlineAdvice(CallBase &CB, FunctionAnalysisManager &FAM,
const InlineParams &Params) {
Function &Caller = *CB.getCaller();
ProfileSummaryInfo *PSI =
FAM.getResult<ModuleAnalysisManagerFunctionProxy>(Caller)
@ -111,10 +113,16 @@ std::unique_ptr<InlineAdvice> DefaultInlineAdvisor::getAdvice(CallBase &CB) {
return getInlineCost(CB, Params, CalleeTTI, GetAssumptionCache, GetTLI,
GetBFI, PSI, RemarksEnabled ? &ORE : nullptr);
};
auto OIC = llvm::shouldInline(CB, GetInlineCost, ORE,
Params.EnableDeferral.hasValue() &&
Params.EnableDeferral.getValue());
return std::make_unique<DefaultInlineAdvice>(this, CB, OIC, ORE);
return llvm::shouldInline(CB, GetInlineCost, ORE,
Params.EnableDeferral.hasValue() &&
Params.EnableDeferral.getValue());
}
std::unique_ptr<InlineAdvice> DefaultInlineAdvisor::getAdvice(CallBase &CB) {
auto OIC = getDefaultInlineAdvice(CB, FAM, Params);
return std::make_unique<DefaultInlineAdvice>(
this, CB, OIC,
FAM.getResult<OptimizationRemarkEmitterAnalysis>(*CB.getCaller()));
}
InlineAdvice::InlineAdvice(InlineAdvisor *Advisor, CallBase &CB,