GCC Middle and Back End API Reference
pretty-print.h File Reference
#include "obstack.h"
#include "rich-location.h"
#include "diagnostic-url.h"
Include dependency graph for pretty-print.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  text_info
 
class  output_buffer
 
struct  pp_wrapping_mode_t
 
class  format_postprocessor
 
class  token_printer
 
class  pretty_printer
 

Namespaces

namespace  pp_markup
 

Macros

#define PP_NL_ARGMAX   30
 
#define pp_is_wrapping_line(PP)
 
#define pp_space(PP)
 
#define pp_left_paren(PP)
 
#define pp_right_paren(PP)
 
#define pp_left_bracket(PP)
 
#define pp_right_bracket(PP)
 
#define pp_left_brace(PP)
 
#define pp_right_brace(PP)
 
#define pp_semicolon(PP)
 
#define pp_comma(PP)
 
#define pp_dot(PP)
 
#define pp_colon(PP)
 
#define pp_colon_colon(PP)
 
#define pp_arrow(PP)
 
#define pp_equal(PP)
 
#define pp_question(PP)
 
#define pp_bar(PP)
 
#define pp_bar_bar(PP)
 
#define pp_carret(PP)
 
#define pp_ampersand(PP)
 
#define pp_ampersand_ampersand(PP)
 
#define pp_less(PP)
 
#define pp_less_equal(PP)
 
#define pp_greater(PP)
 
#define pp_greater_equal(PP)
 
#define pp_plus(PP)
 
#define pp_minus(PP)
 
#define pp_star(PP)
 
#define pp_slash(PP)
 
#define pp_modulo(PP)
 
#define pp_exclamation(PP)
 
#define pp_complement(PP)
 
#define pp_quote(PP)
 
#define pp_backquote(PP)
 
#define pp_doublequote(PP)
 
#define pp_underscore(PP)
 
#define pp_maybe_newline_and_indent(PP, N)
 
#define pp_scalar(PP, FORMAT, SCALAR)
 
#define pp_decimal_int(PP, I)
 
#define pp_unsigned_wide_integer(PP, I)
 
#define pp_vrange(PP, R)
 
#define pp_double(PP, F)
 
#define pp_pointer(PP, P)
 
#define pp_identifier(PP, ID)
 
#define GCC_PPDIAG_STYLE   __gcc_diag__
 
#define ATTRIBUTE_GCC_PPDIAG(m, n)
 

Typedefs

typedef unsigned int pp_flags
 
typedef bool(* printer_fn) (pretty_printer *, text_info *, const char *, int, bool, bool, bool, bool *, pp_token_list &)
 

Enumerations

enum  diagnostic_prefixing_rule_t { DIAGNOSTICS_SHOW_PREFIX_ONCE = 0x0 , DIAGNOSTICS_SHOW_PREFIX_NEVER = 0x1 , DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE = 0x2 }
 
enum  pp_padding { pp_none , pp_before , pp_after }
 

Functions

const char * output_buffer_formatted_text (output_buffer *buff)
 
void output_buffer_append_r (output_buffer *buff, const char *start, int length)
 
const char * output_buffer_last_position_in_text (const output_buffer *buff)
 
boolpp_needs_newline (pretty_printer *pp)
 
output_buffer *& pp_buffer (pretty_printer *pp)
 
output_bufferpp_buffer (const pretty_printer *pp)
 
const char * pp_get_prefix (const pretty_printer *pp)
 
char * pp_take_prefix (pretty_printer *pp)
 
void pp_destroy_prefix (pretty_printer *pp)
 
int & pp_line_cutoff (pretty_printer *pp)
 
diagnostic_prefixing_rule_tpp_prefixing_rule (pretty_printer *pp)
 
pp_wrapping_mode_tpp_wrapping_mode (pretty_printer *pp)
 
int & pp_indentation (pretty_printer *pp)
 
boolpp_translate_identifiers (pretty_printer *pp)
 
boolpp_show_color (pretty_printer *pp)
 
printer_fnpp_format_decoder (pretty_printer *pp)
 
format_postprocessor *& pp_format_postprocessor (pretty_printer *pp)
 
boolpp_show_highlight_colors (pretty_printer *pp)
 
const diagnostic_prefixing_rule_tpp_prefixing_rule (const pretty_printer *pp)
 
void pp_set_line_maximum_length (pretty_printer *, int)
 
void pp_set_prefix (pretty_printer *pp, char *prefix)
 
void pp_clear_output_area (pretty_printer *)
 
const char * pp_formatted_text (pretty_printer *)
 
const char * pp_last_position_in_text (const pretty_printer *)
 
void pp_emit_prefix (pretty_printer *pp)
 
void pp_append_text (pretty_printer *, const char *, const char *)
 
void pp_newline_and_flush (pretty_printer *)
 
void pp_newline_and_indent (pretty_printer *, int)
 
void pp_separate_with (pretty_printer *, char)
 
void pp_printf (pretty_printer *, const char *,...) ATTRIBUTE_GCC_PPDIAG(2
 
void void pp_verbatim (pretty_printer *, const char *,...) ATTRIBUTE_GCC_PPDIAG(2
 
void void void pp_flush (pretty_printer *)
 
void pp_really_flush (pretty_printer *)
 
void pp_format (pretty_printer *pp, text_info *text)
 
void pp_output_formatted_text (pretty_printer *pp, const urlifier *urlifier=nullptr)
 
void pp_format_verbatim (pretty_printer *, text_info *)
 
void pp_indent (pretty_printer *)
 
void pp_newline (pretty_printer *)
 
void pp_character (pretty_printer *, int)
 
void pp_string (pretty_printer *, const char *)
 
void pp_string_n (pretty_printer *, const char *, size_t)
 
void pp_unicode_character (pretty_printer *, unsigned)
 
void pp_write_text_to_stream (pretty_printer *)
 
void pp_write_text_as_dot_label_to_stream (pretty_printer *, bool)
 
void pp_write_text_as_html_like_dot_to_stream (pretty_printer *pp)
 
void pp_maybe_space (pretty_printer *pp)
 
void pp_begin_quote (pretty_printer *, bool)
 
void pp_end_quote (pretty_printer *, bool)
 
void pp_begin_url (pretty_printer *pp, const char *url)
 
void pp_end_url (pretty_printer *pp)
 
pp_wrapping_mode_t pp_set_verbatim_wrapping (pretty_printer *pp)
 
const char * identifier_to_locale (const char *)
 
void pp_wide_integer (pretty_printer *pp, HOST_WIDE_INT i)
 
void pp_wide_int (pretty_printer *pp, const wide_int_ref &w, signop sgn)
 
template<unsigned int N, typename T >
void pp_wide_integer (pretty_printer *pp, const poly_int< N, T > &)
 

Variables

void *(* identifier_to_locale_alloc )(size_t)
 
void(* identifier_to_locale_free )(void *)
 

Macro Definition Documentation

◆ ATTRIBUTE_GCC_PPDIAG

#define ATTRIBUTE_GCC_PPDIAG ( m,
n )
Value:
ATTRIBUTE_NONNULL(m)
This header may be included before diagnostics-core.h, hence the duplicate
definitions to allow for GCC-specific formats.   

◆ GCC_PPDIAG_STYLE

#define GCC_PPDIAG_STYLE   __gcc_diag__
If we haven't already defined a front-end-specific diagnostics
style, use the generic one.   

◆ pp_ampersand

#define pp_ampersand ( PP)
Value:
pp_character (PP, '&')
void pp_character(pretty_printer *, int)
Definition pretty-print.cc:2548

◆ pp_ampersand_ampersand

#define pp_ampersand_ampersand ( PP)
Value:
pp_string (PP, "&&")
void pp_string(pretty_printer *, const char *)
Definition pretty-print.cc:2566

◆ pp_arrow

#define pp_arrow ( PP)
Value:
pp_string (PP, "->")

Referenced by dump_generic_node().

◆ pp_backquote

#define pp_backquote ( PP)
Value:
pp_character (PP, '`')

◆ pp_bar

#define pp_bar ( PP)

◆ pp_bar_bar

#define pp_bar_bar ( PP)
Value:
pp_string (PP, "||")

◆ pp_carret

#define pp_carret ( PP)
Value:
pp_character (PP, '^')

◆ pp_colon

◆ pp_colon_colon

#define pp_colon_colon ( PP)
Value:
pp_string (PP, "::")

Referenced by dump_generic_node().

◆ pp_comma

◆ pp_complement

#define pp_complement ( PP)
Value:
pp_character (PP, '~')

Referenced by dump_unary_rhs().

◆ pp_decimal_int

◆ pp_dot

#define pp_dot ( PP)
Value:
pp_character (PP, '.')

Referenced by dump_generic_node(), and dump_gimple_call().

◆ pp_double

#define pp_double ( PP,
F )
Value:
pp_scalar (PP, "%f", F)

Referenced by format_phase_2().

◆ pp_doublequote

#define pp_doublequote ( PP)
Value:
pp_character (PP, '"')

◆ pp_equal

◆ pp_exclamation

#define pp_exclamation ( PP)
Value:
pp_character (PP, '!')

Referenced by dump_unary_rhs(), and print_pattern().

◆ pp_greater

◆ pp_greater_equal

#define pp_greater_equal ( PP)
Value:
pp_string (PP, ">=")

Referenced by dump_gimple_omp_for().

◆ pp_identifier

#define pp_identifier ( PP,
ID )
Value:
: (ID)))
@ ID
Definition gengtype.h:483
bool & pp_translate_identifiers(pretty_printer *pp)
Definition pretty-print.h:428
const char * identifier_to_locale(const char *)
Definition pretty-print.cc:2795

Referenced by default_tree_printer().

◆ pp_is_wrapping_line

#define pp_is_wrapping_line ( PP)
Value:
(pp_line_cutoff (PP) > 0)
int & pp_line_cutoff(pretty_printer *pp)
Definition pretty-print.h:461
True if PRETTY-PRINTER is in line-wrapping mode.   

Referenced by escaped_string::escape(), pp_append_text(), pp_character(), pp_maybe_wrap_text(), pp_wrap_text(), and pretty_printer::set_real_maximum_length().

◆ pp_left_brace

◆ pp_left_bracket

◆ pp_left_paren

◆ pp_less

#define pp_less ( PP)
Value:
pp_character (PP, '<')

Referenced by dump_gimple_omp_for().

◆ pp_less_equal

#define pp_less_equal ( PP)
Value:
pp_string (PP, "<=")

Referenced by dump_gimple_omp_for().

◆ pp_maybe_newline_and_indent

#define pp_maybe_newline_and_indent ( PP,
N )
Value:
#define N
Definition gensupport.cc:202
bool & pp_needs_newline(pretty_printer *pp)
Definition pretty-print.h:413
void pp_newline_and_indent(pretty_printer *, int)
Definition pretty-print.cc:2684

◆ pp_minus

#define pp_minus ( PP)

◆ pp_modulo

#define pp_modulo ( PP)
Value:
pp_character (PP, '%')

Referenced by print_value().

◆ PP_NL_ARGMAX

#define PP_NL_ARGMAX   30
Various declarations for language-independent pretty-print subroutines.
   Copyright (C) 2002-2024 Free Software Foundation, Inc.
   Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
Maximum number of format string arguments.   

Referenced by pretty_printer::format(), format_phase_1(), and format_phase_2().

◆ pp_plus

#define pp_plus ( PP)
Value:
pp_character (PP, '+')

Referenced by dump_omp_clause().

◆ pp_pointer

#define pp_pointer ( PP,
P )

◆ pp_question

#define pp_question ( PP)
Value:
pp_character (PP, '?')

Referenced by dump_generic_node().

◆ pp_quote

#define pp_quote ( PP)
Value:
pp_character (PP, '\'')

Referenced by ubsan_type_descriptor().

◆ pp_right_brace

◆ pp_right_bracket

◆ pp_right_paren

◆ pp_scalar

#define pp_scalar ( PP,
FORMAT,
SCALAR )
Value:
do \
{ \
sprintf (pp_buffer (PP)->m_digit_buffer, FORMAT, SCALAR); \
pp_string (PP, pp_buffer (PP)->m_digit_buffer); \
} \
while (0)
@ SCALAR
Definition gengtype.h:482
output_buffer *& pp_buffer(pretty_printer *pp)
Definition pretty-print.h:393

Referenced by dump_block_node(), dump_decl_name(), dump_edge_probability(), dump_function_name(), dump_generic_node(), dump_gimple_fmt(), format_phase_2(), and print_value().

◆ pp_semicolon

◆ pp_slash

#define pp_slash ( PP)
Value:
pp_character (PP, '/')

◆ pp_space

◆ pp_star

#define pp_star ( PP)

◆ pp_underscore

#define pp_underscore ( PP)
Value:
pp_character (PP, '_')

Referenced by dump_generic_node(), and simd_clone_mangle().

◆ pp_unsigned_wide_integer

#define pp_unsigned_wide_integer ( PP,
I )
Value:
pp_scalar (PP, HOST_WIDE_INT_PRINT_UNSIGNED, (unsigned HOST_WIDE_INT) I)
#define HOST_WIDE_INT_PRINT_UNSIGNED
Definition hwint.h:112

Referenced by dump_generic_node(), dump_mem_ref(), pp_double_int(), simd_clone_mangle(), and ubsan_type_descriptor().

◆ pp_vrange

#define pp_vrange ( PP,
R )
Value:
do \
{ \
vrange_printer vrange_pp (PP); \
(R)->accept (vrange_pp); \
} \
while (0)
Definition value-range-pretty-print.h:25

Referenced by dump_ssaname_info().

Typedef Documentation

◆ pp_flags

typedef unsigned int pp_flags
The type of pretty-printer flags passed to clients.   

◆ printer_fn

typedef bool(* printer_fn) (pretty_printer *, text_info *, const char *, int, bool, bool, bool, bool *, pp_token_list &)
The type of a hook that formats client-specific data onto a pretty_printer.
A client-supplied formatter returns true if everything goes well,
otherwise it returns false.   

Enumeration Type Documentation

◆ diagnostic_prefixing_rule_t

How often diagnostics are prefixed by their locations:
o DIAGNOSTICS_SHOW_PREFIX_NEVER: never - not yet supported;
o DIAGNOSTICS_SHOW_PREFIX_ONCE: emit only once;
o DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE: emit each time a physical
line is started.   
Enumerator
DIAGNOSTICS_SHOW_PREFIX_ONCE 
DIAGNOSTICS_SHOW_PREFIX_NEVER 
DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE 

◆ pp_padding

enum pp_padding
Enumerator
pp_none 
pp_before 
pp_after 

Function Documentation

◆ identifier_to_locale()

const char * identifier_to_locale ( const char * ident)
extern
Given IDENT, an identifier in the internal encoding, return a
version of IDENT suitable for diagnostics in the locale character
set: either IDENT itself, or a string, allocated using
identifier_to_locale_alloc, converted to the locale character set
and using escape sequences if not representable in the locale
character set or containing control characters or invalid byte
sequences.  Existing backslashes in IDENT are not doubled, so the
result may not uniquely specify the contents of an arbitrary byte
sequence identifier.   

References cd, CONST_CAST, decode_utf8_char(), errno, i, identifier_to_locale_alloc, identifier_to_locale_free, locale_encoding, locale_utf8, and NULL.

Referenced by announce_function(), default_tree_printer(), dump_fancy_name(), expand_expr_real_1(), compiler_logical_location::get_name_for_tree_for_path_output(), compiler_logical_location::get_name_with_scope_for_tree(), compiler_logical_location::get_short_name_for_tree(), lhd_print_error_function(), pp_tree_identifier(), resolve_operand_name_1(), symtab_node::verify_base(), and cgraph_node::verify_node().

◆ output_buffer_append_r()

void output_buffer_append_r ( output_buffer * buff,
const char * start,
int length )
inline
Append to the output buffer a string specified by its
STARTing character and LENGTH.   

References gcc_checking_assert, i, output_buffer::m_line_length, and output_buffer::m_obstack.

Referenced by pp_append_r().

◆ output_buffer_formatted_text()

const char * output_buffer_formatted_text ( output_buffer * buff)
inline
Finishes constructing a NULL-terminated character string representing
the buffered text.   

References output_buffer::m_obstack.

Referenced by pp_formatted_text().

◆ output_buffer_last_position_in_text()

const char * output_buffer_last_position_in_text ( const output_buffer * buff)
inline
Return a pointer to the last character emitted in the
output_buffer.  A NULL pointer means no character available.   

References output_buffer::m_obstack, NULL, and obstack.

Referenced by dump_pretty_printer::custom_token_printer::emit_any_pending_textual_chunks(), and pp_last_position_in_text().

◆ pp_append_text()

void pp_append_text ( pretty_printer * pp,
const char * start,
const char * end )
extern
Append a string delimited by START and END to the output area of
PRETTY-PRINTER.  No line wrapping is done.  However, if beginning a
new line then emit PRETTY-PRINTER's prefix and skip any leading
whitespace if appropriate.  The caller must ensure that it is
safe to do so.   

References pretty_printer::emit_prefix(), end(), pp_append_r(), pp_buffer(), and pp_is_wrapping_line.

Referenced by dump_fancy_name(), format_phase_2(), pp_maybe_wrap_text(), pp_tree_identifier(), and pp_wrap_text().

◆ pp_begin_quote()

void pp_begin_quote ( pretty_printer * pp,
bool show_color )
extern
Add a localized open quote, and if SHOW_COLOR is true, begin colorizing
using the "quote" color.   

References colorize_start(), open_quote, and pp_string().

Referenced by default_token_printer(), dump_pretty_printer::custom_token_printer::print_tokens(), and sarif_builder::sarif_token_printer::print_tokens().

◆ pp_begin_url()

◆ pp_buffer() [1/2]

output_buffer * pp_buffer ( const pretty_printer * pp)
inline

◆ pp_buffer() [2/2]

◆ pp_character()

◆ pp_clear_output_area()

◆ pp_destroy_prefix()

void pp_destroy_prefix ( pretty_printer * pp)
extern
Free PRETTY-PRINTER's prefix, a previously malloc()'d string.   

Referenced by diagnostic_text_output_format::append_note().

◆ pp_emit_prefix()

void pp_emit_prefix ( pretty_printer * pp)
inline

◆ pp_end_quote()

void pp_end_quote ( pretty_printer * pp,
bool show_color )
extern
If SHOW_COLOR is true, stop colorizing.
Add a localized close quote.   

References close_quote, colorize_stop(), and pp_string().

Referenced by default_token_printer(), dump_pretty_printer::custom_token_printer::print_tokens(), and sarif_builder::sarif_token_printer::print_tokens().

◆ pp_end_url()

◆ pp_flush()

◆ pp_format()

◆ pp_format_decoder()

printer_fn & pp_format_decoder ( pretty_printer * pp)
inline

◆ pp_format_postprocessor()

format_postprocessor *& pp_format_postprocessor ( pretty_printer * pp)
inline

◆ pp_format_verbatim()

void pp_format_verbatim ( pretty_printer * pp,
text_info * text )
extern
Helper subroutine of output_verbatim and verbatim. Do the appropriate
settings needed by BUFFER for a verbatim formatting.   

References pp_format(), pp_output_formatted_text(), pp_set_verbatim_wrapping(), and pp_wrapping_mode().

Referenced by pp_verbatim(), and verbatim().

◆ pp_formatted_text()

const char * pp_formatted_text ( pretty_printer * pp)
extern

◆ pp_get_prefix()

const char * pp_get_prefix ( const pretty_printer * pp)
inline

◆ pp_indent()

void pp_indent ( pretty_printer * pp)
extern
Insert enough spaces into the output area of PRETTY-PRINTER to bring
the column position to the current indentation level, assuming that a
newline has just been written to the buffer.   

References i, pp_indentation(), and pp_space.

Referenced by pretty_printer::emit_prefix(), pp_newline_and_indent(), json::array::print(), and json::object::print().

◆ pp_indentation()

int & pp_indentation ( pretty_printer * pp)
inline
The amount of whitespace to be emitted when starting a new line.   

Referenced by pp_indent(), pp_newline_and_indent(), json::array::print(), and json::object::print().

◆ pp_last_position_in_text()

const char * pp_last_position_in_text ( const pretty_printer * pp)
extern
Return a pointer to the last character emitted in PRETTY-PRINTER's
output area.  A NULL pointer means no character available.   

References output_buffer_last_position_in_text(), and pp_buffer().

◆ pp_line_cutoff()

int & pp_line_cutoff ( pretty_printer * pp)
inline
Maximum characters per line in automatic line wrapping mode.
Zero means don't wrap lines.   

Referenced by diagnostic_context::initialize(), and pp_set_line_maximum_length().

◆ pp_maybe_space()

void pp_maybe_space ( pretty_printer * pp)
inline

◆ pp_needs_newline()

◆ pp_newline()

void pp_newline ( pretty_printer * pp)
extern
Have PRETTY-PRINTER start a new line.   

References output_buffer::m_line_length, pp_buffer(), and pp_needs_newline().

Referenced by gcc_rich_location::add_fixit_insert_formatted(), diagnostic_text_output_format::append_note(), dump_context::begin_scope(), default_diagnostic_start_span_fn(), default_diagnostic_text_finalizer(), digraph< GraphTraits >::dump_dot_to_pp(), dump_generic_node(), dump_gimple_assume(), dump_gimple_bind(), dump_gimple_fmt(), dump_gimple_omp_block(), dump_gimple_omp_critical(), dump_gimple_omp_for(), dump_gimple_omp_masked(), dump_gimple_omp_ordered(), dump_gimple_omp_parallel(), dump_gimple_omp_scan(), dump_gimple_omp_scope(), dump_gimple_omp_sections(), dump_gimple_omp_single(), dump_gimple_omp_target(), dump_gimple_omp_task(), dump_gimple_omp_taskgroup(), dump_gimple_omp_teams(), dump_gimple_seq(), dump_gimple_transaction(), dump_gimple_try(), dump_implicit_edges(), dump_phi_nodes(), ana::one_way_id_map< T >::dump_to_pp(), gimple_dump_bb_for_graph(), lhd_print_error_function(), make_item_for_dump_gimple_stmt(), newline_and_indent(), newline_and_indent(), diagnostic_text_output_format::on_diagram(), pp_character(), pp_newline_and_flush(), pp_newline_and_indent(), pp_wrap_text(), json::array::print(), json::object::print(), edited_line::print_content(), edited_file::print_diff(), print_insn_with_notes(), print_parseable_fixits(), print_pattern(), print_struct_decl(), graphviz_out::println(), diagnostic_text_output_format::report_current_module(), and ana::format::spacer().

◆ pp_newline_and_flush()

◆ pp_newline_and_indent()

void pp_newline_and_indent ( pretty_printer * pp,
int n )
extern

◆ pp_output_formatted_text()

void pp_output_formatted_text ( pretty_printer * pp,
const urlifier * urlifier )
extern
Phase 3 of formatting a message (phases 1 and 2 done by pp_format).

Pop a pp_formatted_chunks from chunk_obstack, collecting all the tokens from
phases 1 and 2 of formatting, and writing into text in formatted_obstack.

If URLIFIER is non-null then use it on any quoted text that was not
handled in phases 1 or 2 to potentially add URLs.   

Referenced by simple_diagnostic_path::add_event(), simple_diagnostic_path::add_thread_event(), diagnostic_text_output_format::append_note(), diagnostic_text_output_format::on_report_diagnostic(), json_output_format::on_report_diagnostic(), sarif_builder::on_report_diagnostic(), opt_problem::opt_problem(), pp_format_verbatim(), pp_printf(), graphviz_out::print(), and graphviz_out::println().

◆ pp_prefixing_rule() [1/2]

const diagnostic_prefixing_rule_t & pp_prefixing_rule ( const pretty_printer * pp)
inline

◆ pp_prefixing_rule() [2/2]

diagnostic_prefixing_rule_t & pp_prefixing_rule ( pretty_printer * pp)
inline
Prefixing rule used in formatting a diagnostic message.   

◆ pp_printf()

void pp_printf ( pretty_printer * ,
const char * ,
... )
extern

◆ pp_really_flush()

void pp_really_flush ( pretty_printer * pp)
extern
Flush the content of BUFFER onto the attached stream independently
of the value of pp->output_buffer->flush_p.   

References pretty_printer::clear_state(), pp_buffer(), and pp_write_text_to_stream().

◆ pp_separate_with()

void pp_separate_with ( pretty_printer * pp,
char c )
extern

References pp_character(), and pp_space.

◆ pp_set_line_maximum_length()

void pp_set_line_maximum_length ( pretty_printer * pp,
int length )
extern
Sets the number of maximum characters per line PRETTY-PRINTER can
output in line-wrapping mode.  A LENGTH value 0 suppresses
line-wrapping.   

References pp_line_cutoff(), and pretty_printer::set_real_maximum_length().

Referenced by common_handle_option().

◆ pp_set_prefix()

◆ pp_set_verbatim_wrapping()

pp_wrapping_mode_t pp_set_verbatim_wrapping ( pretty_printer * pp)
inline
Switch into verbatim mode and return the old mode.   

Referenced by pretty_printer::format(), and pp_format_verbatim().

◆ pp_show_color()

◆ pp_show_highlight_colors()

◆ pp_string()

void pp_string ( pretty_printer * pp,
const char * str )
extern
Append a STRING to the output area of PRETTY-PRINTER; the STRING may
be line-wrapped if in appropriate mode.   

References gcc_checking_assert, and pp_maybe_wrap_text().

Referenced by gcc_rich_location::add_fixit_insert_formatted(), pp_markup::comma_separated_quoted_strings::add_to_phase_2(), asan_add_global(), asan_dynamic_init_call(), asan_emit_stack_protection(), graphviz_out::begin_td(), graphviz_out::begin_tr(), graphviz_out::begin_trtd(), pretty_printer::begin_url(), default_diagnostic_start_span_fn(), default_token_printer(), default_tree_printer(), do_niy(), draw_cfg_node(), irange_bitmask::dump(), dump_array_domain(), dump_binary_rhs(), dump_block_node(), dump_decl_name(), digraph< GraphTraits >::dump_dot_to_pp(), dump_function_declaration(), dump_function_name(), dump_generic_node(), dump_gimple_asm(), dump_gimple_assign(), dump_gimple_assume(), dump_gimple_call(), dump_gimple_call_args(), dump_gimple_cond(), dump_gimple_fmt(), dump_gimple_label(), dump_gimple_mem_ops(), dump_gimple_omp_atomic_load(), dump_gimple_omp_atomic_store(), dump_gimple_omp_block(), dump_gimple_omp_continue(), dump_gimple_omp_critical(), dump_gimple_omp_for(), dump_gimple_omp_masked(), dump_gimple_omp_ordered(), dump_gimple_omp_parallel(), dump_gimple_omp_return(), dump_gimple_omp_scan(), dump_gimple_omp_scope(), dump_gimple_omp_sections(), dump_gimple_omp_single(), dump_gimple_omp_target(), dump_gimple_omp_task(), dump_gimple_omp_taskgroup(), dump_gimple_omp_teams(), dump_gimple_phi(), dump_gimple_return(), dump_gimple_switch(), dump_gimple_transaction(), dump_gimple_try(), dump_implicit_edges(), dump_location(), dump_mem_ref(), dump_omp_atomic_memory_order(), dump_omp_clause(), dump_omp_context_selector(), dump_omp_iterators(), dump_omp_loop_non_rect_expr(), dump_ssaname_info(), dump_ternary_rhs(), ana::one_way_id_map< T >::dump_to_pp(), ana::record_layout::item::dump_to_pp(), diagnostic_event::meaning::dump_to_pp(), dump_unary_rhs(), dump_context::emit_item(), graphviz_out::end_td(), graphviz_out::end_tdtr(), graphviz_out::end_tr(), pretty_printer::end_url(), fixup_debug_use(), format_phase_2(), gimple_dump_bb_for_graph(), pp_begin_quote(), pp_cfg_jump(), pp_double_int(), pp_end_quote(), pp_gimple_stmt_1(), pp_points_to_solution(), pp_wide_int_large(), pretty_print_string(), ana::dynamic_call_info_t::print(), ana::rewind_info_t::print(), json::array::print(), json::float_number::print(), json::integer_number::print(), json::literal::print(), json::object::print(), diagnostic_text_output_format::print_any_cwe(), diagnostic_text_output_format::print_any_rules(), print_call_name(), edited_line::print_content(), print_declaration(), edited_file::print_diff(), edited_file::print_diff_hunk(), print_escaped_json_string(), print_escaped_string(), print_exp(), vrange_printer::print_frange_nan(), print_insn(), print_insn_with_notes(), print_int_bound(), print_irange_bitmasks(), print_lto_docs_link(), diagnostic_text_output_format::print_option_information(), print_parseable_fixits(), print_pattern(), vrange_printer::print_real_value(), edited_file::print_run_of_changed_lines(), print_struct_decl(), dump_pretty_printer::custom_token_printer::print_tokens(), sarif_builder::sarif_token_printer::print_tokens(), print_value(), sarif_end_embedded_link(), simd_clone_mangle(), start_graph_dump(), pair_fusion_bb_info::track_access(), ubsan_type_descriptor(), vrange_printer::visit(), vrange_printer::visit(), vrange_printer::visit(), and vrange_printer::visit().

◆ pp_string_n()

void pp_string_n ( pretty_printer * pp,
const char * str,
size_t len )
extern
As per pp_string, but only append the first LEN of STR.   

References gcc_checking_assert, and pp_maybe_wrap_text().

◆ pp_take_prefix()

◆ pp_translate_identifiers()

bool & pp_translate_identifiers ( pretty_printer * pp)
inline
True if identifiers are translated to the locale character set on
output.   

Referenced by dump_fancy_name(), make_item_for_dump_generic_expr(), maybe_init_pretty_print(), and pp_tree_identifier().

◆ pp_unicode_character()

void pp_unicode_character ( pretty_printer * pp,
unsigned c )
extern
Append code point C to the output area of PRETTY-PRINTER, encoding it
as UTF-8.   

References limits, and pp_append_r().

◆ pp_verbatim()

void void pp_verbatim ( pretty_printer * ,
const char * ,
... )
extern

◆ pp_wide_int()

void pp_wide_int ( pretty_printer * pp,
const wide_int_ref & w,
signop sgn )
inline

◆ pp_wide_integer() [1/2]

template<unsigned int N, typename T >
void pp_wide_integer ( pretty_printer * pp,
const poly_int< N, T > & x )

◆ pp_wide_integer() [2/2]

void pp_wide_integer ( pretty_printer * pp,
HOST_WIDE_INT i )
inline
Print I to PP in decimal.   

◆ pp_wrapping_mode()

pp_wrapping_mode_t & pp_wrapping_mode ( pretty_printer * pp)
inline
Get or set the wrapping mode as a single entity.   

Referenced by pp_format_verbatim().

◆ pp_write_text_as_dot_label_to_stream()

void pp_write_text_as_dot_label_to_stream ( pretty_printer * pp,
bool for_record )
extern
As pp_write_text_to_stream, but for GraphViz label output.

Flush the formatted text of pretty-printer PP onto the attached stream.
Replace characters in PPF that have special meaning in a GraphViz .dot
file.

This routine is not very fast, but it doesn't have to be as this is only
be used by routines dumping intermediate representations in graph form.   

References fputc(), gcc_assert, output_buffer::m_stream, pp_buffer(), pp_clear_output_area(), and pp_formatted_text().

Referenced by gimple_dump_bb_for_graph(), rtl_dump_bb_for_graph(), and start_graph_dump().

◆ pp_write_text_as_html_like_dot_to_stream()

void pp_write_text_as_html_like_dot_to_stream ( pretty_printer * pp)
extern
As pp_write_text_to_stream, but for GraphViz HTML-like strings.

Flush the formatted text of pretty-printer PP onto the attached stream,
escaping these characters
  " & < >
using XML escape sequences.

http://www.graphviz.org/doc/info/lang.html#html states:
   special XML escape sequences for ", &, <, and > may be necessary in
   order to embed these characters in attribute values or raw text
This doesn't list "'" (which would normally be escaped in XML
as "&apos;" or in HTML as "&#39;");.

Experiments show that escaping "'" doesn't seem to be necessary.   

References fputc(), output_buffer::m_stream, pp_buffer(), pp_clear_output_area(), and pp_formatted_text().

◆ pp_write_text_to_stream()

Variable Documentation

◆ identifier_to_locale_alloc

void *(* identifier_to_locale_alloc) (size_t) ( size_t )
extern
Allocator for identifier_to_locale and corresponding function to
free memory.   

Referenced by general_init(), and identifier_to_locale().

◆ identifier_to_locale_free

void(* identifier_to_locale_free) (void *) ( void * )
extern