summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/SampleProfile.cpp
diff options
context:
space:
mode:
authorDehao Chen <dehao@google.com>2016-11-22 22:50:01 +0000
committerDehao Chen <dehao@google.com>2016-11-22 22:50:01 +0000
commit554f500ae2b978473f3a200afb6e32c378a3a8bf (patch)
tree7de09bb3d6d15619b2aebd51ee7b7df384298523 /llvm/lib/Transforms/IPO/SampleProfile.cpp
parente7ffae9dea1c934d3f9be2b74a629f215d674fe1 (diff)
downloadbcm5719-llvm-554f500ae2b978473f3a200afb6e32c378a3a8bf.tar.gz
bcm5719-llvm-554f500ae2b978473f3a200afb6e32c378a3a8bf.zip
Before sample pgo annotation, do not inline a function that has no debug info. (NFC)
If there is no debug info in the callee, inlining it will not help annotator. This avoids infinite loop as reported in PR/31119. llvm-svn: 287710
Diffstat (limited to 'llvm/lib/Transforms/IPO/SampleProfile.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/SampleProfile.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp
index 6e1818b2f58..cf0e02e8ecc 100644
--- a/llvm/lib/Transforms/IPO/SampleProfile.cpp
+++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp
@@ -651,6 +651,8 @@ bool SampleProfileLoader::inlineHotFunctions(Function &F) {
InvokeInst *II = dyn_cast<InvokeInst>(I);
Function *CalledFunction =
(CI == nullptr ? II->getCalledFunction() : CI->getCalledFunction());
+ if (!CalledFunction || !CalledFunction->getSubprogram())
+ continue;
DebugLoc DLoc = I->getDebugLoc();
uint64_t NumSamples = findCalleeFunctionSamples(*I)->getTotalSamples();
if ((CI && InlineFunction(CI, IFI)) || (II && InlineFunction(II, IFI))) {
OpenPOWER on IntegriCloud