diff options
| author | Easwaran Raman <eraman@google.com> | 2015-12-07 21:21:20 +0000 |
|---|---|---|
| committer | Easwaran Raman <eraman@google.com> | 2015-12-07 21:21:20 +0000 |
| commit | 6d90d9f102c6a401e84b92506b2ab011c5c72362 (patch) | |
| tree | 64748ef6ffc759f2b7dbb6b9ba8a3afab11e7647 | |
| parent | 1f1a15332b99bfaf2c6ae0fa702762a15b840d17 (diff) | |
| download | bcm5719-llvm-6d90d9f102c6a401e84b92506b2ab011c5c72362.tar.gz bcm5719-llvm-6d90d9f102c6a401e84b92506b2ab011c5c72362.zip | |
Use updated threshold for indirect call bonus
When considering foo->bar inlining, if there is an indirect call in foo which gets resolved to a direct call (say baz), then we try to inline baz into bar with a threshold T and subtract max(T - Cost(bar->baz), 0) from Cost(foo->bar). This patch uses max(Threshold(bar->baz) - Cost(bar->baz)) instead, where Thresheld(bar->baz) could be different from T due to bonuses or subtractions. Threshold(bar->baz) - Cost(bar->baz) better represents the desirability of inlining baz into bar.
Differential Revision: http://reviews.llvm.org/D14309
llvm-svn: 254945
| -rw-r--r-- | llvm/lib/Analysis/InlineCost.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp index 6d7d7499906..cebc8731d4d 100644 --- a/llvm/lib/Analysis/InlineCost.cpp +++ b/llvm/lib/Analysis/InlineCost.cpp @@ -834,8 +834,8 @@ bool CallAnalyzer::visitCallSite(CallSite CS) { CallAnalyzer CA(TTI, ACT, *F, InlineConstants::IndirectCallThreshold, CS); if (CA.analyzeCall(CS)) { // We were able to inline the indirect call! Subtract the cost from the - // bonus we want to apply, but don't go below zero. - Cost -= std::max(0, InlineConstants::IndirectCallThreshold - CA.getCost()); + // threshold to get the bonus we want to apply, but don't go below zero. + Cost -= std::max(0, CA.getThreshold() - CA.getCost()); } return Base::visitCallSite(CS); |

