analyzer: better logging for dedupe_winners::add
authorDavid Malcolm <dmalcolm@redhat.com>
Sat, 14 Dec 2019 00:47:47 +0000 (19:47 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 14 Jan 2020 23:24:56 +0000 (18:24 -0500)
gcc/analyzer/ChangeLog:
* diagnostic-manager.cc (dedupe_winners::add): Add logging
of deduplication decisions made.

gcc/analyzer/ChangeLog
gcc/analyzer/diagnostic-manager.cc

index 684124357b6683e13c4f176dfceca0e9f55ad5df..4fe354a0c975944c0fe9b44370dfe7a92d747bd3 100644 (file)
@@ -1,3 +1,8 @@
+2020-01-14  David Malcolm  <dmalcolm@redhat.com>
+
+       * diagnostic-manager.cc (dedupe_winners::add): Add logging
+       of deduplication decisions made.
+
 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
 
        * ChangeLog: New file.
index cd2c3bf2076e65c3fa22fda078a5eca39cdd3a22..7bd21d63e3888a1c914ad0a9df369819706c6fb3 100644 (file)
@@ -325,12 +325,19 @@ public:
     dedupe_key *key = new dedupe_key (sd, dc->get_path ());
     if (dedupe_candidate **slot = m_map.get (key))
       {
+       if (logger)
+         logger->log ("already have this dedupe_key");
+
        (*slot)->add_duplicate ();
 
        if (dc->length () < (*slot)->length ())
          {
            /* We've got a shorter path for the key; replace
               the current candidate.  */
+           if (logger)
+             logger->log ("length %i is better than existing length %i;"
+                          " taking over this dedupe_key",
+                          dc->length (), (*slot)->length ());
            dc->m_num_dupes = (*slot)->get_num_dupes ();
            delete *slot;
            *slot = dc;
@@ -338,12 +345,22 @@ public:
        else
          /* We haven't beaten the current best candidate;
             drop the new candidate.  */
-         delete dc;
+         {
+           if (logger)
+             logger->log ("length %i isn't better than existing length %i;"
+                          " dropping this candidate",
+                          dc->length (), (*slot)->length ());
+           delete dc;
+         }
        delete key;
       }
     else
-      /* This is the first candidate for this key.  */
-      m_map.put (key, dc);
+      {
+       /* This is the first candidate for this key.  */
+       m_map.put (key, dc);
+       if (logger)
+         logger->log ("first candidate for this dedupe_key");
+      }
   }
 
  /* Emit the simplest diagnostic within each set.  */