From: Kurt Garloff Date: Thu, 30 Aug 2001 13:55:17 +0000 (+0000) Subject: optimize.c (inlinable_function_p): Allow only smaller single functions. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=598e9ba5bd920939ca3ff1ef2f57299bea665d6e;p=gcc.git 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5acd0640335..c44c8098546 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-08-30 Kurt Garloff + + * optimize.c (inlinable_function_p): Allow only smaller single + functions. Halve inline limit after reaching recursive limit. + 2001-08-30 Joern Rennecke Jason Merrill diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index c0ebb99b794..95d02b70c34 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -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