[PATCH] Drop profile reproducibility flag as it is not used.

Jan Hubicka hubicka@ucw.cz
Thu Jan 21 18:54:39 GMT 2021


> On 1/21/21 7:45 PM, Jan Hubicka wrote:
> > For this reason we merge by computing average, which is stable over
> > reordering the indices....
> 
> Looking at the implementation, we merge by using minimum value:
> 
> /* Time profiles are merged so that minimum from all valid (greater than zero)
>    is stored. There could be a fork that creates new counters. To have
>    the profile stable, we chosen to pick the smallest function visit time.  */

Yep, sorry for confussion.  I just noticed that as well.
Minimum should be still safe for parallel-run profiling (not for
multithreaded where we probably really want to disabe it, but we can do
that on per-function basis using opt_for_fn so it works with LTO).

Honza
> void
> __gcov_merge_time_profile (gcov_type *counters, unsigned n_counters)
> {
>   unsigned int i;
>   gcov_type value;
> 
>   for (i = 0; i < n_counters; i++)
>     {
>       value = gcov_get_counter_target ();
> 
>       if (value && (!counters[i] || value < counters[i]))
>         counters[i] = value;
>     }
> }
> #endif /* L_gcov_merge_time_profile */
> 
> Martin


More information about the Gcc-patches mailing list