aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorKurt Garloff <garloff@suse.de>2001-08-30 13:55:17 +0000
committerGerald Pfeifer <gerald@gcc.gnu.org>2001-08-30 13:55:17 +0000
commit598e9ba5bd920939ca3ff1ef2f57299bea665d6e (patch)
treecae4e0cb4dbf6c8771fb49c7bf4fc43074d8e219 /gcc/cp
parent95602da11cade17438211fe316b95e9dd5a68dd4 (diff)
downloadgcc-598e9ba5bd920939ca3ff1ef2f57299bea665d6e.zip
gcc-598e9ba5bd920939ca3ff1ef2f57299bea665d6e.tar.gz
gcc-598e9ba5bd920939ca3ff1ef2f57299bea665d6e.tar.bz2
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
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/optimize.c12
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5acd064..c44c809 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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>
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index c0ebb99..95d02b7 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