[llvm] cec20db - [Inlining] Set inline-deferral-scale to 2.
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Mon May 25 15:44:34 PDT 2020
Author: Kazu Hirata
Date: 2020-05-25T15:44:20-07:00
New Revision: cec20db588254289dc2953517310b9886f6dc243
URL: https://github.com/llvm/llvm-project/commit/cec20db588254289dc2953517310b9886f6dc243
DIFF: https://github.com/llvm/llvm-project/commit/cec20db588254289dc2953517310b9886f6dc243.diff
LOG: [Inlining] Set inline-deferral-scale to 2.
Summary:
This patch sets inline-deferral-scale to 2.
Both internal and SPEC benchmarking show that 2 is the best number
among -1, 2, 3, and 4.
inline-deferral-scale SPECint2006
------------------------------------------------------------
-1 38.0 (the default without this patch)
2 38.5
3 38.1
4 38.1
With the new default number, shouldBeDeferred returns true if:
TotalCost < IC.getCost() * 2
where
TotalCost is TotalSecondaryCost + IC.getCost() * NumCallerUsers.
If TotalCost >= 0 and NumCallerUsers >= 2, then
TotalCost >= IC.getCost() * 2, so shouldBeDeferred returns true only
when NumCallerUsers is 1.
Now, if TotalSecondaryCost < 0, which can happen if
InlineConstants::LastCallToStaticBonus, a huge number, has been
subtracted from TotalSecondaryCost, then TotalCost may be negative.
In this case, shouldBeDeferred may return true even when
NumCallerUsers >= 2.
Reviewers: davidxl, nikic
Reviewed By: davidxl
Subscribers: xbolva00, hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80229
Added:
Modified:
llvm/lib/Analysis/InlineAdvisor.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/InlineAdvisor.cpp b/llvm/lib/Analysis/InlineAdvisor.cpp
index dcaf9d0fea74..ac3ba451aa3f 100644
--- a/llvm/lib/Analysis/InlineAdvisor.cpp
+++ b/llvm/lib/Analysis/InlineAdvisor.cpp
@@ -45,7 +45,7 @@ static cl::opt<bool>
static cl::opt<int>
InlineDeferralScale("inline-deferral-scale",
cl::desc("Scale to limit the cost of inline deferral"),
- cl::init(-1), cl::Hidden);
+ cl::init(2), cl::Hidden);
namespace {
class DefaultInlineAdvice : public InlineAdvice {
More information about the llvm-commits
mailing list