No functional change intended.

gcc/ChangeLog:
        * diagnostic-format-json.cc (diagnostic_output_format_init_json):
        Replace clearing of diagnostic_context::m_print_path callback with
        setting the path format to DPF_NONE.
        * diagnostic-format-sarif.cc
        (diagnostic_output_format_init_sarif): Likewise.
        * diagnostic.cc (diagnostic_context::show_any_path): Replace call
        to diagnostic_context::m_print_path callback with a direct call to
        diagnostic_context::print_path.
        * diagnostic.h (diagnostic_context::print_path): New decl.
        (diagnostic_context::m_print_path): Delete callback.
        * tree-diagnostic-path.cc (default_tree_diagnostic_path_printer):
        Convert to...
        (diagnostic_context::print_path): ...this.
        * tree-diagnostic.cc (tree_diagnostics_defaults): Delete
        initialization of m_print_path.
        * tree-diagnostic.h (default_tree_diagnostic_path_printer): Delete
        decl.

Signed-off-by: David Malcolm <dmalc...@redhat.com>
---
 gcc/diagnostic-format-json.cc  |  4 ++--
 gcc/diagnostic-format-sarif.cc |  4 +++-
 gcc/diagnostic.cc              |  3 +--
 gcc/diagnostic.h               |  4 ++--
 gcc/tree-diagnostic-path.cc    | 23 +++++++++++------------
 gcc/tree-diagnostic.cc         |  1 -
 gcc/tree-diagnostic.h          |  3 ---
 7 files changed, 19 insertions(+), 23 deletions(-)

diff --git a/gcc/diagnostic-format-json.cc b/gcc/diagnostic-format-json.cc
index 2bdc2c13d37..ec03ac15aeb 100644
--- a/gcc/diagnostic-format-json.cc
+++ b/gcc/diagnostic-format-json.cc
@@ -395,8 +395,8 @@ private:
 static void
 diagnostic_output_format_init_json (diagnostic_context *context)
 {
-  /* Override callbacks.  */
-  context->m_print_path = nullptr; /* handled in json_end_diagnostic.  */
+  /* Suppress normal textual path output.  */
+  context->set_path_format (DPF_NONE);
 
   /* The metadata is handled in JSON format, rather than as text.  */
   context->set_show_cwe (false);
diff --git a/gcc/diagnostic-format-sarif.cc b/gcc/diagnostic-format-sarif.cc
index 79116f051bc..5f438dd38a8 100644
--- a/gcc/diagnostic-format-sarif.cc
+++ b/gcc/diagnostic-format-sarif.cc
@@ -1991,8 +1991,10 @@ private:
 static void
 diagnostic_output_format_init_sarif (diagnostic_context *context)
 {
+  /* Suppress normal textual path output.  */
+  context->set_path_format (DPF_NONE);
+
   /* Override callbacks.  */
-  context->m_print_path = nullptr; /* handled in sarif_end_diagnostic.  */
   context->set_ice_handler_callback (sarif_ice_handler);
 
   /* The metadata is handled in SARIF format, rather than as text.  */
diff --git a/gcc/diagnostic.cc b/gcc/diagnostic.cc
index 844eb8e1048..471135f16de 100644
--- a/gcc/diagnostic.cc
+++ b/gcc/diagnostic.cc
@@ -915,8 +915,7 @@ diagnostic_context::show_any_path (const diagnostic_info 
&diagnostic)
   if (!path)
     return;
 
-  if (m_print_path)
-    m_print_path (this, path);
+  print_path (path);
 }
 
 /* class diagnostic_event.  */
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index ff2aa3dd9a3..c6846525da3 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -583,6 +583,8 @@ private:
                   pretty_printer *pp,
                   diagnostic_source_effect_info *effect_info);
 
+  void print_path (const diagnostic_path *path);
+
   /* Data members.
      Ideally, all of these would be private and have "m_" prefixes.  */
 
@@ -712,8 +714,6 @@ private:
   urlifier *m_urlifier;
 
 public:
-  void (*m_print_path) (diagnostic_context *, const diagnostic_path *);
-
   /* Auxiliary data for client.  */
   void *m_client_aux_data;
 
diff --git a/gcc/tree-diagnostic-path.cc b/gcc/tree-diagnostic-path.cc
index adaaf30b84f..35f8ea2b8b6 100644
--- a/gcc/tree-diagnostic-path.cc
+++ b/gcc/tree-diagnostic-path.cc
@@ -884,17 +884,16 @@ print_path_summary_as_text (const path_summary *ps, 
diagnostic_context *dc,
 
 } /* end of anonymous namespace for path-printing code.  */
 
-/* Print PATH to CONTEXT, according to CONTEXT's path_format.  */
+/* Print PATH according to this context's path_format.  */
 
 void
-default_tree_diagnostic_path_printer (diagnostic_context *context,
-                                     const diagnostic_path *path)
+diagnostic_context::print_path (const diagnostic_path *path)
 {
   gcc_assert (path);
 
   const unsigned num_events = path->num_events ();
 
-  switch (context->get_path_format ())
+  switch (get_path_format ())
     {
     case DPF_NONE:
       /* Do nothing.  */
@@ -909,7 +908,7 @@ default_tree_diagnostic_path_printer (diagnostic_context 
*context,
            label_text event_text (event.get_desc (false));
            gcc_assert (event_text.get ());
            diagnostic_event_id_t event_id (i);
-           if (context->show_path_depths_p ())
+           if (this->show_path_depths_p ())
              {
                int stack_depth = event.get_stack_depth ();
                /* -fdiagnostics-path-format=separate-events doesn't print
@@ -941,13 +940,13 @@ default_tree_diagnostic_path_printer (diagnostic_context 
*context,
       {
        /* Consolidate related events.  */
        path_summary summary (*path, true,
-                             context->m_source_printing.show_event_links_p);
-       char *saved_prefix = pp_take_prefix (context->printer);
-       pp_set_prefix (context->printer, NULL);
-       print_path_summary_as_text (&summary, context,
-                                   context->show_path_depths_p ());
-       pp_flush (context->printer);
-       pp_set_prefix (context->printer, saved_prefix);
+                             m_source_printing.show_event_links_p);
+       char *saved_prefix = pp_take_prefix (this->printer);
+       pp_set_prefix (this->printer, NULL);
+       print_path_summary_as_text (&summary, this,
+                                   show_path_depths_p ());
+       pp_flush (this->printer);
+       pp_set_prefix (this->printer, saved_prefix);
       }
       break;
     }
diff --git a/gcc/tree-diagnostic.cc b/gcc/tree-diagnostic.cc
index f236f3db0b2..fc78231dfa4 100644
--- a/gcc/tree-diagnostic.cc
+++ b/gcc/tree-diagnostic.cc
@@ -179,7 +179,6 @@ tree_diagnostics_defaults (diagnostic_context *context)
   diagnostic_starter (context) = default_tree_diagnostic_starter;
   diagnostic_finalizer (context) = default_diagnostic_finalizer;
   diagnostic_format_decoder (context) = default_tree_printer;
-  context->m_print_path = default_tree_diagnostic_path_printer;
   context->set_set_locations_callback (set_inlining_locations);
   context->set_client_data_hooks (make_compiler_data_hooks ());
 }
diff --git a/gcc/tree-diagnostic.h b/gcc/tree-diagnostic.h
index 648d6e6ab91..6ebac381ace 100644
--- a/gcc/tree-diagnostic.h
+++ b/gcc/tree-diagnostic.h
@@ -55,7 +55,4 @@ void tree_diagnostics_defaults (diagnostic_context *context);
 bool default_tree_printer (pretty_printer *, text_info *, const char *,
                           int, bool, bool, bool, bool *, const char **);
 
-extern void default_tree_diagnostic_path_printer (diagnostic_context *,
-                                                 const diagnostic_path *);
-
 #endif /* ! GCC_TREE_DIAGNOSTIC_H */
-- 
2.26.3

Reply via email to