Disable inlining of recursive calls. It can complicate tailcallelim and

dependent analyses, and increase code size, so doing it profitably would
require more complex heuristics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101471 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2010-04-16 16:01:18 +00:00
parent ea25b48af3
commit b391bb8947
2 changed files with 36 additions and 0 deletions
+7
View File
@@ -263,6 +263,13 @@ InlineCost InlineCostAnalyzer::getInlineCost(CallSite CS,
CS.isNoInline())
return llvm::InlineCost::getNever();
// Don't inline directly recursive calls, for now. Inlining a directly
// recursive call is effectively unrolling a loop, so it calls for different
// heuristics, which aren't implemented yet. Until then, err on the
// conservative side.
if (Callee == Caller)
return llvm::InlineCost::getNever();
// InlineCost - This value measures how good of an inline candidate this call
// site is to inline. A lower inline cost make is more likely for the call to
// be inlined. This value may go negative.