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. */
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