[llvm] 9d375a4 - Reapply [InlineCost] Enable the cost benefit analysis on FDO
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 25 21:52:03 PDT 2021
Author: Kazu Hirata
Date: 2021-03-25T21:51:38-07:00
New Revision: 9d375a40c3df90dd48edc0e1b1115c702c55d716
URL: https://github.com/llvm/llvm-project/commit/9d375a40c3df90dd48edc0e1b1115c702c55d716
DIFF: https://github.com/llvm/llvm-project/commit/9d375a40c3df90dd48edc0e1b1115c702c55d716.diff
LOG: Reapply [InlineCost] Enable the cost benefit analysis on FDO
This patch enables the cost-benefit-analysis-based inliner by default
if we have instrumentation profile.
- SPEC CPU 2017 shows a 0.4% improvement.
- An internal large benchmark shows a 0.9% reduction in the cycle
count along with 14.6% reduction in the number of call instructions
executed.
Differential Revision: https://reviews.llvm.org/D98213
Added:
Modified:
llvm/lib/Analysis/InlineCost.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp
index 538dfacdaa5b..f4e22d47b98a 100644
--- a/llvm/lib/Analysis/InlineCost.cpp
+++ b/llvm/lib/Analysis/InlineCost.cpp
@@ -675,15 +675,22 @@ class InlineCostCallAnalyzer final : public CallAnalyzer {
}
bool isCostBenefitAnalysisEnabled() {
- if (!InlineEnableCostBenefitAnalysis)
- return false;
-
if (!PSI || !PSI->hasProfileSummary())
return false;
if (!GetBFI)
return false;
+ if (InlineEnableCostBenefitAnalysis.getNumOccurrences()) {
+ // Honor the explicit request from the user.
+ if (!InlineEnableCostBenefitAnalysis)
+ return false;
+ } else {
+ // Otherwise, require instrumentation profile.
+ if (!PSI->hasInstrumentationProfile())
+ return false;
+ }
+
auto *Caller = CandidateCall.getParent()->getParent();
if (!Caller->getEntryCount())
return false;
More information about the llvm-commits
mailing list