On 1/23/20 1:41 PM, Jan Hubicka wrote:
So my bet is that before the patch we had a bogus code. We detected invalid
stated with hiving first counter value == -1. Which could be also reached
with decrement of all values (0 - 1 == -1).

Maybe we would be interested in usage of a huge negative number to reflect
invalid state?

As discusse dover lunch, use of -1 should be safe because it matters
only in the on-disk counters which are prunned first and all -1 which
are result of actual time profiling should disappear.  However looking
at the code there seems bug:

diff --git a/libgcc/libgcov-driver.c b/libgcc/libgcov-driver.c
index cdb611de2a2..e5f93943c87 100644
--- a/libgcc/libgcov-driver.c
+++ b/libgcc/libgcov-driver.c
@@ -219,9 +219,6 @@ static struct gcov_fn_buffer *fn_buffer;
  static void
  prune_topn_counter (gcov_type *counters, gcov_type all)
  {
-  if (counters[1] == -1)
-    return;
-
    for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++)
      {
        if (counters[2 * i + 1] < all)

Does this make sense and help something? :)

No, this one can be really removed.

I'm going to test it and commit.

Martin

Honza


Reply via email to