forked from OSchip/llvm-project
[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
This commit is contained in:
parent
179c80117c
commit
cec20db588
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue