https://gcc.gnu.org/g:4c7a58ac2617e24069c9ad3d469a7f87dc96091d

commit r15-3973-g4c7a58ac2617e24069c9ad3d469a7f87dc96091d
Author: David Malcolm <dmalc...@redhat.com>
Date:   Mon Sep 30 11:48:28 2024 -0400

    diagnostics: add "dump" to pretty_printer and output_buffer
    
    No functional change intended.
    
    gcc/ChangeLog:
            * pretty-print.cc (output_buffer::dump): New.
            (pretty_printer::dump): New.
            * pretty-print.h (output_buffer::dump): New decls.
            (pretty_printer::dump): New decls.
    
    Signed-off-by: David Malcolm <dmalc...@redhat.com>

Diff:
---
 gcc/pretty-print.cc | 23 +++++++++++++++++++++++
 gcc/pretty-print.h  |  6 ++++++
 2 files changed, 29 insertions(+)

diff --git a/gcc/pretty-print.cc b/gcc/pretty-print.cc
index 68c145e2d532..6a1d1ec484ba 100644
--- a/gcc/pretty-print.cc
+++ b/gcc/pretty-print.cc
@@ -790,6 +790,21 @@ output_buffer::pop_formatted_chunks ()
   obstack_free (&m_chunk_obstack, old_top);
 }
 
+/* Dump state of this output_buffer to OUT, for debugging.  */
+
+void
+output_buffer::dump (FILE *out) const
+{
+  int depth = 0;
+  for (pp_formatted_chunks *iter = m_cur_formatted_chunks;
+       iter;
+       iter = iter->m_prev, depth++)
+    {
+      fprintf (out, "pp_formatted_chunks: depth %i\n", depth);
+      iter->dump (out);
+    }
+}
+
 #ifndef PTRDIFF_MAX
 #define PTRDIFF_MAX INTTYPE_MAXIMUM (ptrdiff_t)
 #endif
@@ -3013,6 +3028,14 @@ pretty_printer::end_url ()
     pp_string (this, get_end_url_string (this));
 }
 
+/* Dump state of this pretty_printer to OUT, for debugging.  */
+
+void
+pretty_printer::dump (FILE *out) const
+{
+  m_buffer->dump (out);
+}
+
 /* class pp_markup::context.  */
 
 void
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index b5ded5cdd5e0..ec64a167327b 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -93,6 +93,9 @@ public:
   pp_formatted_chunks *push_formatted_chunks ();
   void pop_formatted_chunks ();
 
+  void dump (FILE *out) const;
+  void DEBUG_FUNCTION dump () const { dump (stderr); }
+
   /* Obstack where the text is built up.  */
   struct obstack m_formatted_obstack;
 
@@ -313,6 +316,9 @@ public:
   void set_real_maximum_length ();
   int remaining_character_count_for_line ();
 
+  void dump (FILE *out) const;
+  void DEBUG_FUNCTION dump () const { dump (stderr); }
+
 private:
   /* Where we print external representation of ENTITY.  */
   output_buffer *m_buffer;

Reply via email to