From 6dd196f762c934981ede17e197746b11426cd23a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 15 Mar 2004 06:38:14 +0000 Subject: Restore old inlining heuristic. As the comment indicates, this is a nasty horrible hack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12423 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/IPO/InlineSimple.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/Transforms/IPO/InlineSimple.cpp b/lib/Transforms/IPO/InlineSimple.cpp index d28fcbf..0c950c7 100644 --- a/lib/Transforms/IPO/InlineSimple.cpp +++ b/lib/Transforms/IPO/InlineSimple.cpp @@ -216,7 +216,14 @@ int SimpleInliner::getInlineCost(CallSite CS) { // Don't inline into something too big, which would make it bigger. Here, we // count each basic block as a single unit. - InlineCost += Caller->size()/20; + // + // FIXME: THIS IS A TOTAL HACK. The problem is that we don't keep track of + // which call sites are the result of an inlining operation. Because of this, + // if we inline a recursive function into a callee, we will see a new call to + // the recursive function. Every time we inline we get a new callsite for the + // function, which only stops when the caller reaches its inlining limit. + // Until the real problem is fixed, we apply this gnasty hack. + InlineCost += Caller->size(); // Look at the size of the callee. Each basic block counts as 20 units, and -- cgit v1.1