> This fixes part of the issue described in PR gcov-profile/54487 where
> there were warnings about mismatches due to slight differences in the
> merged histograms in different object files. This can happen due to
> the truncating integer division in the merge routine, which could result
> in slightly different histograms when summaries are merged in different
> orders.
> 
> Tested with bootstrap and profiledbootstrap on x86_64-unknown-linux-gnu.
> Ok for trunk?

OK,
thanks!
Honza
> 
> Teresa
> 
> 2012-09-06  Teresa Johnson  <tejohn...@google.com>
> 
>         PR gcov-profile/54487
>       * libgcc/libgcov.c (gcov_exit): Avoid warning on histogram
>         differences.
> 
> Index: libgcc/libgcov.c
> ===================================================================
> --- libgcc/libgcov.c  (revision 191035)
> +++ libgcc/libgcov.c  (working copy)
> @@ -707,7 +707,13 @@ gcov_exit (void)
>           memcpy (cs_all, cs_prg, sizeof (*cs_all));
>         else if (!all_prg.checksum
>                  && (!GCOV_LOCKED || cs_all->runs == cs_prg->runs)
> -                && memcmp (cs_all, cs_prg, sizeof (*cs_all)))
> +                   /* Don't compare the histograms, which may have slight
> +                      variations depending on the order they were updated
> +                      due to the truncating integer divides used in the
> +                      merge.  */
> +                   && memcmp (cs_all, cs_prg,
> +                              sizeof (*cs_all) - (sizeof (gcov_bucket_type)
> +                                                  * GCOV_HISTOGRAM_SIZE)))
>           {
>             fprintf (stderr, "profiling:%s:Invocation mismatch - some data 
> files may have been removed%s\n",
>                      gi_filename, GCOV_LOCKED
> 
> --
> This patch is available for review at http://codereview.appspot.com/6501100

Reply via email to