> On 01/02/14 10:21, Jan Hubicka wrote:
> >Hi,
> >While looking for -Winline messages I noticed that sched-int.h has self 
> >recursive
> >function declared inline.  The recursion is tail recursion but we fail to 
> >recognize
> >it as such. The problem ist hat there is a local variable link whose address
> >is passed to function  &DEPS_LIST_FIRST (list) and we are thus unsure if the
> >memory location is dead.
> >
> >I tried to bring that function inline, too, but it does not help, since alias
> >analysis won't figure out that passing the address to a function won't 
> >capture
> >it because we do not have nocapture discovery in early passes (it may be
> >valuable addition).
> >
> >Anyway, it is easy to turn recursion into iteration here and probably makes
> >sense.
> >
> >Bootstrapped/regtested x86_64-linux, OK?
> >
> >Honza
> >
> >     * sched-int.h (sd_iterator_cond): Manually tail recurse.
> Are these really things we need for 4.9?  We're supposed to be
> fixing bugs right now :-)

Well, I did the work as part of regular release tunning I do for IPA passes.
The motivation is to verify shape of inliner/ipa-cp heuristics that both
changed quite heavily for 4.9 (and is given different data due to different
early opts). I usually go through SPEC, GCC sources, C++ benchmarks, polyhedron
since it is easier for me to analyze sourcebases I am familiar with.

While doing so I noticed that C++ conversion bloated our binary
noticeably (it grew more than in previous releses). We do have many
duplicate copies of static inline functions that was not inlined for various
reasons and we more often hit limit of large function growth.
Fixing those should cover this regression partly.

I solved various cases, but I have no problem with waiting for those
smaller ones for next stage1.

Honza

Reply via email to