* optimize.c (inlinable_function_p): Allow only smaller single
authorgerald <gerald@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Aug 2001 13:55:17 +0000 (13:55 +0000)
committergerald <gerald@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Aug 2001 13:55:17 +0000 (13:55 +0000)
functions. Halve inline limit after reaching recursive limit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45286 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/optimize.c

index 5acd064..c44c809 100644 (file)
@@ -1,3 +1,8 @@
+2001-08-30  Kurt Garloff  <garloff@suse.de>
+       * optimize.c (inlinable_function_p): Allow only smaller single
+       functions. Halve inline limit after reaching recursive limit.
 2001-08-30  Joern Rennecke <amylaar@redhat.com>
            Jason Merrill  <jason_merrill@redhat.com>
 
index c0ebb99..95d02b7 100644 (file)
@@ -659,8 +659,9 @@ inlinable_function_p (fn, id)
   /* We can't inline varargs functions.  */
   else if (varargs_function_p (fn))
     ;
-  /* We can't inline functions that are too big.  */
-  else if (DECL_NUM_STMTS (fn) * INSNS_PER_STMT > MAX_INLINE_INSNS)
+  /* We can't inline functions that are too big.
+   * Only allow a single function to eat up half of our budget. */
+  else if (DECL_NUM_STMTS (fn) * INSNS_PER_STMT > MAX_INLINE_INSNS / 2)
     ;
   /* All is well.  We can inline this function.  Traditionally, GCC
      has refused to inline functions using alloca, or functions whose
@@ -674,9 +675,10 @@ inlinable_function_p (fn, id)
 
   /* Even if this function is not itself too big to inline, it might
      be that we've done so much inlining already that we don't want to
-     risk inlining any more.  */
-  if ((DECL_NUM_STMTS (fn) + id->inlined_stmts) * INSNS_PER_STMT 
-      > MAX_INLINE_INSNS)
+     risk too much inlining any more and thus halve the acceptable size. */
+  if ((DECL_NUM_STMTS (fn) + id->inlined_stmts) * INSNS_PER_STMT
+      > MAX_INLINE_INSNS
+      && DECL_NUM_STMTS (fn) * INSNS_PER_STMT > MAX_INLINE_INSNS / 4)
     inlinable = 0;
 
   /* We can inline a template instantiation only if it's fully