> Hi, > > the patch below fixes PR 54394. The problem is that since revision > 190346 we depend on bb->loop_father being non-NULL to get loop_depth. > However, with loops not computed, the loop_father is NULL, loop_depth > is thus considered zero and call graph edges out of such BB can be > considered much cooler, leading to inlining regressions. > > This patch fixes that by recomputing loops whenever optimizing, not > only for loop bounds hints. We might put the computation elsewhere or > do it only under more restrictive circumstances, but I believe that > after rev. 190346 we have to do it. In particular, I am not sure > whether we had (semi)correct loop_depths when doing early inlining or > not, this patch re-calculates it for early inliner too. > > Bootstrapped and tested on x86_64-linux, fixes fatigue run-time on > an x86_64-linux and i686-linux for me. What do you think? > > Thanks, > > Martin > > > 2012-08-29 Martin Jambor <mjam...@suse.cz> > > PR middle-end/54394 > * ipa-inline-analysis.c (estimate_function_body_sizes): Compute > dominance info and loops whenever optimizing. > > > Index: src/gcc/ipa-inline-analysis.c > =================================================================== > --- src.orig/gcc/ipa-inline-analysis.c > +++ src/gcc/ipa-inline-analysis.c > @@ -2102,6 +2102,11 @@ estimate_function_body_sizes (struct cgr > info->conds = 0; > info->entry = 0; > > + if (optimize)
This is OK. I think you can also skip thi computation for early inlining where we don't do any hints, so probably if (optimize && !early) Honza