------- Comment #4 from krebbel1 at de dot ibm dot com 2005-10-17 14:42 ------- I think the problem is that cgraph_decide_recursive_inlining returns true even if nothing got inlined. That may happen if the function is already more often inlined into itself than max_depth. In this case the body of the while loop is not even once executed. With the attached patch the function returns true only if the counter n got increased at least once indicating that inlining took place. This patchfixes the bug for the 197.parser testcase and bootstraps on s390 and s390x without testsuite regressions. It survived a profiledbootstrap on i686 without producing testsuite regressions.
Index: gcc/ipa-inline.c =================================================================== *** gcc/ipa-inline.c.orig 2005-10-11 17:20:15.000000000 +0200 --- gcc/ipa-inline.c 2005-10-17 13:58:56.000000000 +0200 *************** cgraph_decide_recursive_inlining (struct *** 650,656 **** function. At this place we should probably walk the function and inline clones and compensate the counts accordingly. This probably doesn't matter much in practice. */ ! return true; } /* Set inline_failed for all callers of given function to REASON. */ --- 650,656 ---- function. At this place we should probably walk the function and inline clones and compensate the counts accordingly. This probably doesn't matter much in practice. */ ! return n > 0; } /* Set inline_failed for all callers of given function to REASON. */ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24093