diff options
author | David Malcolm <dmalcolm@redhat.com> | 2020-02-11 17:13:44 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2020-02-17 02:11:50 -0500 |
commit | 670987874d2aa043a454e112291931e32f4ca8cc (patch) | |
tree | 1f7d1df70864da5dbc1aeca44ea76a3f8d1134fe /gcc/analyzer | |
parent | a8532e9927ad6e4bbedbb957b02ca413aedf9098 (diff) |
analyzer: add diagnostics to output of -fdump-analyzer-exploded-graph
gcc/analyzer/ChangeLog:
* diagnostic-manager.h (diagnostic_manager::get_saved_diagnostic):
Add const overload.
* engine.cc (exploded_node::dump_dot): Dump saved_diagnostics.
* exploded-graph.h (exploded_graph::get_diagnostic_manager): Add
const overload.
Diffstat (limited to 'gcc/analyzer')
-rw-r--r-- | gcc/analyzer/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/analyzer/diagnostic-manager.h | 4 | ||||
-rw-r--r-- | gcc/analyzer/engine.cc | 14 | ||||
-rw-r--r-- | gcc/analyzer/exploded-graph.h | 4 |
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index eda1052e4ff..9f1e25d1e90 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog @@ -1,3 +1,11 @@ +2020-02-17 David Malcolm <dmalcolm@redhat.com> + + * diagnostic-manager.h (diagnostic_manager::get_saved_diagnostic): + Add const overload. + * engine.cc (exploded_node::dump_dot): Dump saved_diagnostics. + * exploded-graph.h (exploded_graph::get_diagnostic_manager): Add + const overload. + 2020-02-11 David Malcolm <dmalcolm@redhat.com> PR analyzer/93288 diff --git a/gcc/analyzer/diagnostic-manager.h b/gcc/analyzer/diagnostic-manager.h index 0c1d9766a10..171d2792c00 100644 --- a/gcc/analyzer/diagnostic-manager.h +++ b/gcc/analyzer/diagnostic-manager.h @@ -95,6 +95,10 @@ public: { return m_saved_diagnostics[idx]; } + const saved_diagnostic *get_saved_diagnostic (unsigned idx) const + { + return m_saved_diagnostics[idx]; + } private: void build_emission_path (const exploded_graph &eg, diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc index 7860da0572a..17507c7c08e 100644 --- a/gcc/analyzer/engine.cc +++ b/gcc/analyzer/engine.cc @@ -854,6 +854,20 @@ exploded_node::dump_dot (graphviz_out *gv, const dump_args_t &args) const } } + /* Dump any saved_diagnostics at this enode. */ + { + const diagnostic_manager &dm = args.m_eg.get_diagnostic_manager (); + for (unsigned i = 0; i < dm.get_num_diagnostics (); i++) + { + const saved_diagnostic *sd = dm.get_saved_diagnostic (i); + if (sd->m_enode == this) + { + pp_printf (pp, "DIAGNOSTIC: %s", sd->m_d->get_kind ()); + pp_newline (pp); + } + } + } + pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true); pp_string (pp, "\"];\n\n"); diff --git a/gcc/analyzer/exploded-graph.h b/gcc/analyzer/exploded-graph.h index 5d69bffdddd..bb1f3ccff1a 100644 --- a/gcc/analyzer/exploded-graph.h +++ b/gcc/analyzer/exploded-graph.h @@ -768,6 +768,10 @@ public: { return m_diagnostic_manager; } + const diagnostic_manager &get_diagnostic_manager () const + { + return m_diagnostic_manager; + } stats *get_global_stats () { return &m_global_stats; } stats *get_or_create_function_stats (function *fn); |