mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-22 00:59:55 +08:00
re PR rtl-optimization/10679 ([3.3/3.4] --param min-inline-insns not honoured)
PR optimization/10679 * tree-inline.c (inlinable_function_p): Honor MIN_INLINE_INSNS. PR optimization/10679 * g++.dg/opt/inline4.C: New test. From-SVN: r69710
This commit is contained in:
parent
1f9d625626
commit
11b8e71cec
@ -1,3 +1,8 @@
|
||||
2003-07-23 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR optimization/10679
|
||||
* tree-inline.c (inlinable_function_p): Honor MIN_INLINE_INSNS.
|
||||
|
||||
2003-07-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR target/11607 and PR target/11516
|
||||
|
@ -1,3 +1,8 @@
|
||||
2003-07-23 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR optimization/10679
|
||||
* g++.dg/opt/inline4.C: New test.
|
||||
|
||||
2003-07-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.dg/parse/crash10: New test.
|
||||
|
13
gcc/testsuite/g++.dg/opt/inline4.C
Normal file
13
gcc/testsuite/g++.dg/opt/inline4.C
Normal file
@ -0,0 +1,13 @@
|
||||
// { dg-options "-O2 -ftemplate-depth-20000 --param min-inline-insns=100 --param max-inline-insns=3" }
|
||||
|
||||
template <int I>
|
||||
inline void g() { g<I-1>(); return; }
|
||||
|
||||
template <>
|
||||
inline void g<0>() { int i; return; }
|
||||
|
||||
void h() {
|
||||
g<250>();
|
||||
}
|
||||
|
||||
// { dg-final { scan-assembler-not "_Z1g" } }
|
@ -1005,7 +1005,8 @@ inlinable_function_p (tree fn, inline_data *id, int nolimit)
|
||||
/* In case we don't disregard the inlining limits and we basically
|
||||
can inline this function, investigate further. */
|
||||
if (! (*lang_hooks.tree_inlining.disregard_inline_limits) (fn)
|
||||
&& inlinable && !nolimit)
|
||||
&& inlinable && !nolimit
|
||||
&& currfn_insns > MIN_INLINE_INSNS)
|
||||
{
|
||||
int sum_insns = (id ? id->inlined_insns : 0) + currfn_insns;
|
||||
/* In the extreme case that we have exceeded the recursive inlining
|
||||
@ -1017,8 +1018,7 @@ inlinable_function_p (tree fn, inline_data *id, int nolimit)
|
||||
with slope -1/MAX_INLINE_SLOPE to exceedingly decrease the
|
||||
allowable size. We always allow a size of MIN_INLINE_INSNS
|
||||
though. */
|
||||
else if ((sum_insns > MAX_INLINE_INSNS)
|
||||
&& (currfn_insns > MIN_INLINE_INSNS))
|
||||
else if (sum_insns > MAX_INLINE_INSNS)
|
||||
{
|
||||
int max_curr = MAX_INLINE_INSNS_SINGLE
|
||||
- (sum_insns - MAX_INLINE_INSNS) / MAX_INLINE_SLOPE;
|
||||
|
Loading…
Reference in New Issue
Block a user