On Wed, 7 Dec 2011, Jan Hubicka wrote: > Am Tue 06 Dec 2011 03:41:36 PM CET schrieb Richard Guenther > <rguent...@suse.de>: > > > > > This removes accounting for the number of remaining calls in > > the inlining edge badness calculation (as discussed in private > > with Honza a long time ago - and yes, we disagreed). This > > Well, the main reason for disagreement was that is makes programs bigger. > The basic idea of including badness in the cost is to make inliner preffer to > fully inline functions that can be fully inline with little effort. This > seems > to work well to limit size growths when inlining.
Well, the theory might work for functions called once, but I doubt it works for a function called 3 times and one called 2 times. For functions called once we have the inline-functions-called-once stuff, idependent on the fibheap priority driven inlining. > > fixes the various ICEs of the edge badness update and caching > > code checking which are now present for over one month. > > > > Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. > > A SPEC 2k6 LTO run is also in progress where I hope it will fix > > the 403.gcc and 435.gromacs builds which fail with the same > > ICE since a month. > > > > Honza, I guess you have some 12h to come up with a different fix now ;) > > I have patch for maintaining the growth via edge removal/addition hooks for > some time now that speeds things up, too, but needs some cleanups (in > particular it messes up heap updating somewhere and I did not work out where, > yet). I think I can do it over weekend, but I am fine if this patch gets into > tree beforehand. At least we will see how important the global metric still > is. SPEC works, shows no regressions (in fact, binary size improves slightly). I have applied the patch for now. You can resort to reverting it with a more proper fix, but there is no reason to keep this broken during stage3. Thanks, Richard.