summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/SampleProfile.cpp
diff options
context:
space:
mode:
authorDehao Chen <dehao@google.com>2017-06-21 17:57:43 +0000
committerDehao Chen <dehao@google.com>2017-06-21 17:57:43 +0000
commit50f2aa19e8c1a5dcbae3a57ba082a23c073c1783 (patch)
treee8223c493cec9c2f2a27481321ce7653dabfedd5 /llvm/lib/Transforms/IPO/SampleProfile.cpp
parentd0e6e24a53b35202110e8512de3ac0f247f1ae4f (diff)
downloadbcm5719-llvm-50f2aa19e8c1a5dcbae3a57ba082a23c073c1783.tar.gz
bcm5719-llvm-50f2aa19e8c1a5dcbae3a57ba082a23c073c1783.zip
Do not inline recursive direct calls in sample loader pass.
Summary: r305009 disables recursive inlining for indirect calls in sample loader pass. The same logic applies to direct recursive calls. Reviewers: iteratee, davidxl Reviewed By: iteratee Subscribers: sanjoy, llvm-commits, eraman Differential Revision: https://reviews.llvm.org/D34456 llvm-svn: 305934
Diffstat (limited to 'llvm/lib/Transforms/IPO/SampleProfile.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/SampleProfile.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp
index 67bc8f5f6b7..656421ee58d 100644
--- a/llvm/lib/Transforms/IPO/SampleProfile.cpp
+++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp
@@ -690,6 +690,9 @@ bool SampleProfileLoader::inlineHotFunctions(
for (auto I : CIS) {
InlineFunctionInfo IFI(nullptr, ACT ? &GetAssumptionCache : nullptr);
Function *CalledFunction = CallSite(I).getCalledFunction();
+ // Do not inline recursive calls.
+ if (CalledFunction == &F)
+ continue;
Instruction *DI = I;
if (!CalledFunction && !PromotedInsns.count(I) &&
CallSite(I).isIndirectCall())
OpenPOWER on IntegriCloud