> Hi,
> this patch fixes problem we noticed with Martin Liska where gcov_dump is 
> called
> several times per execution of firefox (on each fork and exec).  This causes
> runs to be large and makes functions executed once per program to be 
> considered
> cold.
> 
> This patch makes us to update runs just once per execution and not on each
> streaming of profile data.  While testing it I also noticed that program
> summary is now broken, since crc32 is accumulated per each dumping instead 
> just
> once.
> 
> I believe the newly introduced static vars should go - there is nothing really
> preventing us from doing two concurent updates and also it just unnecesary
> increases to footprint of libgcov.  I converted thus all_prg and crc32 back to
> local vars.
> 
> Bootstrapped/regtested x86_64-linux, comitted.
> 
>       * libgcov-driver.c (get_gcov_dump_complete): Update comments.
>       (all_prg, crc32): Remove static vars.
>       (gcov_exit_compute_summary): Rewrite to return crc32; do not clear
>       all_prg.
>       (gcov_exit_merge_gcda): Add crc32 parameter.
>       (gcov_exit_merge_summary): Add crc32 and all_prg parameter;
>       do not account run if it was already accounted.
>       (gcov_exit_dump_gcov): Add crc32 and all_prg parameters.
>       (gcov_exit): Initialize all_prg; update.

Hi,
it seems I forgot the following hunk in my tree.  With fork we now get
errors about corrupted profile info: run_max * runs < sum_max.
Obviously problem here is again about definition what is run and what
is maximum per run.  I think run_max is quite pointless part of our summary
so I think I will drop it, but first I need to look into the histogram code.

I apologize for the breakage.

Honza

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 204984)
+++ ChangeLog   (working copy)
@@ -1,3 +1,7 @@
+2013-11-18  Jan Hubicka  <j...@suse.cz>
+
+       * profile.c (compute_branch_probabilities): Do not sanity check run_max.
+
 2013-11-18  Bernd Schmidt  <ber...@codesourcery.com>
 
        * cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes.
Index: profile.c
===================================================================
--- profile.c   (revision 204984)
+++ profile.c   (working copy)
@@ -528,11 +528,6 @@ compute_branch_probabilities (unsigned c
   /* Very simple sanity checks so we catch bugs in our profiling code.  */
   if (!profile_info)
     return;
-  if (profile_info->run_max * profile_info->runs < profile_info->sum_max)
-    {
-      error ("corrupted profile info: run_max * runs < sum_max");
-      exec_counts = NULL;
-    }
 
   if (profile_info->sum_all < profile_info->sum_max)
     {

Reply via email to