Commit 598e9ba5 by Kurt Garloff Committed by Gerald Pfeifer

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
parent 95602da1
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> 2001-08-30 Joern Rennecke <amylaar@redhat.com>
Jason Merrill <jason_merrill@redhat.com> Jason Merrill <jason_merrill@redhat.com>
......
...@@ -659,8 +659,9 @@ inlinable_function_p (fn, id) ...@@ -659,8 +659,9 @@ inlinable_function_p (fn, id)
/* We can't inline varargs functions. */ /* We can't inline varargs functions. */
else if (varargs_function_p (fn)) else if (varargs_function_p (fn))
; ;
/* We can't inline functions that are too big. */ /* We can't inline functions that are too big.
else if (DECL_NUM_STMTS (fn) * INSNS_PER_STMT > MAX_INLINE_INSNS) * 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 /* All is well. We can inline this function. Traditionally, GCC
has refused to inline functions using alloca, or functions whose has refused to inline functions using alloca, or functions whose
...@@ -674,9 +675,10 @@ inlinable_function_p (fn, id) ...@@ -674,9 +675,10 @@ inlinable_function_p (fn, id)
/* Even if this function is not itself too big to inline, it might /* 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 be that we've done so much inlining already that we don't want to
risk inlining any more. */ risk too much inlining any more and thus halve the acceptable size. */
if ((DECL_NUM_STMTS (fn) + id->inlined_stmts) * INSNS_PER_STMT if ((DECL_NUM_STMTS (fn) + id->inlined_stmts) * INSNS_PER_STMT
> MAX_INLINE_INSNS) > MAX_INLINE_INSNS
&& DECL_NUM_STMTS (fn) * INSNS_PER_STMT > MAX_INLINE_INSNS / 4)
inlinable = 0; inlinable = 0;
/* We can inline a template instantiation only if it's fully /* We can inline a template instantiation only if it's fully
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment