Return immediately from analyzeCall if analyzeBlock returns false.

This is part of the patch reviewed at http://reviews.llvm.org/D17584

llvm-svn: 266249
This commit is contained in:
Easwaran Raman 2016-04-13 21:20:22 +00:00
parent 8702574557
commit d295b00ae9
1 changed files with 2 additions and 14 deletions

View File

@ -1337,20 +1337,8 @@ bool CallAnalyzer::analyzeCall(CallSite CS) {
// Analyze the cost of this block. If we blow through the threshold, this
// returns false, and we can bail on out.
if (!analyzeBlock(BB, EphValues)) {
if (IsRecursiveCall || ExposesReturnsTwice || HasDynamicAlloca ||
HasIndirectBr || HasFrameEscape)
return false;
// If the caller is a recursive function then we don't want to inline
// functions which allocate a lot of stack space because it would increase
// the caller stack usage dramatically.
if (IsCallerRecursive &&
AllocatedSize > InlineConstants::TotalAllocaSizeRecursiveCaller)
return false;
break;
}
if (!analyzeBlock(BB, EphValues))
return false;
TerminatorInst *TI = BB->getTerminator();