summaryrefslogtreecommitdiff
path: root/gcc/analyzer
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-02-11 17:13:44 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2020-02-17 02:11:50 -0500
commit670987874d2aa043a454e112291931e32f4ca8cc (patch)
tree1f7d1df70864da5dbc1aeca44ea76a3f8d1134fe /gcc/analyzer
parenta8532e9927ad6e4bbedbb957b02ca413aedf9098 (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/ChangeLog8
-rw-r--r--gcc/analyzer/diagnostic-manager.h4
-rw-r--r--gcc/analyzer/engine.cc14
-rw-r--r--gcc/analyzer/exploded-graph.h4
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);