diff options
author | Dehao Chen <dehao@google.com> | 2016-11-22 22:50:01 +0000 |
---|---|---|
committer | Dehao Chen <dehao@google.com> | 2016-11-22 22:50:01 +0000 |
commit | 554f500ae2b978473f3a200afb6e32c378a3a8bf (patch) | |
tree | 7de09bb3d6d15619b2aebd51ee7b7df384298523 /llvm/lib/Transforms | |
parent | e7ffae9dea1c934d3f9be2b74a629f215d674fe1 (diff) | |
download | bcm5719-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')
-rw-r--r-- | llvm/lib/Transforms/IPO/SampleProfile.cpp | 2 |
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))) { |