optimize.c (inlinable_function_p): Allow only smaller single functions.

* optimize.c (inlinable_function_p): Allow only smaller single
	functions. Halve inline limit after reaching recursive limit.

From-SVN: r45286
This commit is contained in:
Kurt Garloff 2001-08-30 13:55:17 +00:00 committed by Gerald Pfeifer
parent 95602da11c
commit 598e9ba5bd
2 changed files with 12 additions and 5 deletions

View 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>

View 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