analyzer: better logging for dedupe_winners::add

gcc/analyzer/ChangeLog:
	* diagnostic-manager.cc (dedupe_winners::add): Add logging
	of deduplication decisions made.
This commit is contained in:
David Malcolm 2019-12-13 19:47:47 -05:00
parent ddd792fa53
commit f474fbd5e3
2 changed files with 25 additions and 3 deletions

View 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.

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