[gcc(refs/users/guojiufu/heads/guojiufu-branch)] analyzer: add diagnostics to output of -fdump-analyzer-exploded-graph

Jiu Fu Guo guojiufu@gcc.gnu.org
Wed Mar 11 02:01:56 GMT 2020


https://gcc.gnu.org/g:670987874d2aa043a454e112291931e32f4ca8cc

commit 670987874d2aa043a454e112291931e32f4ca8cc
Author: David Malcolm <dmalcolm@redhat.com>
Date:   Tue Feb 11 17:13:44 2020 -0500

    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.

Diff:
---
 gcc/analyzer/ChangeLog            |  8 ++++++++
 gcc/analyzer/diagnostic-manager.h |  4 ++++
 gcc/analyzer/engine.cc            | 14 ++++++++++++++
 gcc/analyzer/exploded-graph.h     |  4 ++++
 4 files changed, 30 insertions(+)

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);


More information about the Gcc-cvs mailing list