> 
> graphite does
> 
>   if (changed)
>     {
>       cleanup_tree_cfg ();
>       profile_status_for_fn (cfun) = PROFILE_ABSENT;
>       release_recorded_exits (cfun);
>       tree_estimate_probability (false);
> 
> so it runs into CFG cleanup running before it properly resets counts.
> 
> I wonder if we shouldn't simply get rid of the explicit checking calls in
> cfg cleanup...  or if the profile checking should happen somewhere
> else.
> 
> I'd also appreciate a better way for doing the above.  Shouldn't we
> end up with a proper initialization on all edges as we just split
> existing ones and use create_empty_if_region_on_edge and
> create_empty_loop_on_edge?
> 
> Ah, those use make_edge as well.
> 
> The tree_estimate_probablility call above should be ideally
> replaced with sth like "propagate-SESE-entry-probability".

Well, re-running tree_estimate_probability is a hack and it won't
really get you very sane profile update.   I gues create_empty_if_region_on_edge
and create_empty_loop_on_edge should care about profile, i will try to take
a look.

We have frequency propagation across SEME regions as part of 
find_sub_basic_blocks.
It does not handle loops sanely though (which could be added), but still someone
needs to care about correct probabilities at least.

Honza
> 
> Richard.
> 
> >         Jakub

Reply via email to