Restore old inlining heuristic. As the comment indicates, this is a nasty
authorChris Lattner <sabre@nondot.org>
Mon, 15 Mar 2004 06:38:14 +0000 (06:38 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 15 Mar 2004 06:38:14 +0000 (06:38 +0000)
horrible hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12423 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/InlineSimple.cpp

index d28fcbf85d5495351e683a5b0acb3c7e172786a2..0c950c7ba3f4337062013ac3a4dd44449ad39657 100644 (file)
@@ -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