On Fri, 2019-11-15 at 20:23 -0500, David Malcolm wrote: > This patch adds diagnostic_manager and related support classes for > saving, deduplicating, and emitting analyzer diagnostics. > > gcc/ChangeLog: > * analyzer/diagnostic-manager.cc: New file. > * analyzer/diagnostic-manager.h: New file. I was originally going to suggest we look to bring this out of the analyzer subdir, but it looks like there's a lot of tie-ins to the static analyzer, so let's not try that right now.
> > + > +/* Prune PATH, based on the verbosity level, to the most pertinent > + events for a diagnostic that involves VAR ending in state STATE > + (for state machine SM). > + > + PATH is updated in place, and the redundant checker_events are > deleted. > + > + As well as deleting events, call record_critical_state on events > in > + which state critical to the pending_diagnostic is being handled, > so > + that the event's get_desc vfunc can potentially supply a more > precise > + description of the event to the user. > + e.g. improving > + "calling 'foo' from 'bar'" > + to > + "passing possibly-NULL pointer 'ptr' to 'foo' from 'bar' as > param 1" > + when the diagnostic relates to later dereferencing 'ptr'. */ > + > +void > +diagnostic_manager::prune_path (checker_path *path, > + const state_machine *sm, > + tree var, > + state_machine::state_t state) const You might consider breaking this up a bit. I guess it stands out because it's one of the few places (so far) where the function won't fit in my portrait window :-) Jeff