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;