GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "intl.h"
#include "pretty-print.h"
#include "pretty-print-format-impl.h"
#include "pretty-print-markup.h"
#include "pretty-print-urlifier.h"
#include "diagnostic-color.h"
#include "diagnostic-event-id.h"
#include "diagnostic-highlight-colors.h"
#include "make-unique.h"
#include "selftest.h"
Data Structures | |
struct | auto_obstack |
Macros | |
#define | INCLUDE_MEMORY |
#define | INCLUDE_VECTOR |
#define | PTRDIFF_MAX INTTYPE_MAXIMUM (ptrdiff_t) |
#define | pp_integer_with_precision(PP, ARG, PREC, T, F) |
Variables | |
void *(* | identifier_to_locale_alloc )(size_t) = xmalloc |
void(* | identifier_to_locale_free )(void *) = free |
#define INCLUDE_MEMORY |
Various declarations for language-independent pretty-print subroutines. Copyright (C) 2003-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/>.
#define INCLUDE_VECTOR |
#define pp_integer_with_precision | ( | PP, | |
ARG, | |||
PREC, | |||
T, | |||
F ) |
Format an integer given by va_arg (ARG, type-specifier T) where type-specifier is a precision modifier as indicated by PREC. F is a string used to construct the appropriate format-specifier.
Referenced by format_phase_2().
#define PTRDIFF_MAX INTTYPE_MAXIMUM (ptrdiff_t) |
|
static |
Allocate SZ bytes within S, which must not be half-way through building another object.
References gcc_assert.
Referenced by pp_token_list::merge_consecutive_text_tokens(), pp_token::operator new(), and pp_token_list::operator new().
|
static |
The string starting at P has LEN (at least 1) bytes left; if they start with a valid UTF-8 sequence, return the length of that sequence and set *VALUE to the value of that sequence, and otherwise return 0 and set *VALUE to (unsigned int) -1.
Referenced by identifier_to_locale(), and pp_quoted_string().
|
static |
Default implementation of token printing.
References as_a(), pp_token::begin_color, pp_token::begin_quote, pp_token::begin_url, colorize_start(), colorize_stop(), pp_token::custom_data, pp_token::end_color, pp_token::end_quote, pp_token::end_url, pp_token::event_id, gcc_assert, gcc_unreachable, pp_token_list::m_first, pp_token::m_next, pp_begin_quote(), pp_begin_url(), pp_character(), pp_decimal_int, pp_end_quote(), pp_end_url(), pp_show_color(), pp_string(), and pp_token::text.
|
static |
The following format specifiers are recognized as being client independent: %d, %i: (signed) integer in base ten. %u: unsigned integer in base ten. %o: unsigned integer in base eight. %x: unsigned integer in base sixteen. %ld, %li, %lo, %lu, %lx: long versions of the above. %lld, %lli, %llo, %llu, %llx: long long versions. %wd, %wi, %wo, %wu, %wx: HOST_WIDE_INT versions. %zd, %zi, %zo, %zu, %zx: size_t versions. %td, %ti, %to, %tu, %tx: ptrdiff_t versions. %f: double %c: character. %s: string. %p: pointer (printed in a host-dependent manner). %r: if pp_show_color(pp), switch to color identified by const char *. %R: if pp_show_color(pp), reset color. %m: strerror(text->err_no) - does not consume a value from args_ptr. %%: '%'. %<: opening quote. %>: closing quote. %{: URL start. Consumes a const char * argument for the URL. %}: URL end. Does not consume any arguments. %': apostrophe (should only be used in untranslated messages; translations should use appropriate punctuation directly). %@: diagnostic_event_id_ptr, for which event_id->known_p () must be true. %.*s: a substring the length of which is specified by an argument integer. %Ns: likewise, but length specified as constant in the format string. Flag 'q': quote formatted text (must come immediately after '%'). %Z: Requires two arguments - array of int, and len. Prints elements of the array. %e: Consumes a pp_element * argument. Arguments can be used sequentially, or through %N$ resp. *N$ notation Nth argument after the format string. If %N$ / *N$ notation is used, it must be used for all arguments, except %m, %%, %<, %>, %} and %', which may not have a number, as they do not consume an argument. When %M$.*N$s is used, M must be N + 1. (This may also be written %M$.*s, provided N is not otherwise used.) The format string must have conversion specifiers with argument numbers 1 up to highest argument; each argument may only be used once. A format string can have at most 30 arguments.
Implementation of pp_format. Formatting phases 1 and 2: - push a pp_formatted_chunks instance. - render TEXT->format_spec plus text->m_args_ptr into the pp_formatted_chunks instance as pp_token_lists. Phase 3 is in pp_output_formatted_text, which pops the pp_formatted_chunks instance.
References end(), gcc_assert, gcc_unreachable, text_info::m_err_no, text_info::m_format_spec, pp_token_list::make(), PP_NL_ARGMAX, pp_token_list::push_back(), and push_back_any_text().
Referenced by pretty_printer::format().
|
static |
Second phase. Replace each formatter with pp_tokens for the formatted text it corresponds to, consuming va_args from TEXT->m_args_ptr.
References pp_markup::element::add_to_phase_2(), as_a(), color(), end(), gcc_assert, HOST_WIDE_INT_PRINT, HOST_WIDE_INT_PRINT_HEX, HOST_WIDE_INT_PRINT_UNSIGNED, i, diagnostic_event_id_t::known_p(), text_info::m_args_ptr, pp_token_list::m_end, pp_token_list::m_first, pp_token::m_kind, pp_token_list::make(), pp_append_text(), pp_character(), pp_comma, pp_double, pp_format_decoder(), pp_integer_with_precision, PP_NL_ARGMAX, pp_pointer, pp_quoted_string(), pp_scalar, pp_space, pp_string(), pp_wide_integer(), pp_token_list::push_back(), push_back_any_text(), and pp_token::text.
Referenced by pretty_printer::format().
|
static |
Helper function for pp_end_url and pp_format, return the "close URL" escape sequence string.
References gcc_unreachable, pretty_printer::get_url_format(), URL_FORMAT_BEL, URL_FORMAT_NONE, and URL_FORMAT_ST.
Referenced by pretty_printer::end_url().
const char * identifier_to_locale | ( | const char * | ident | ) |
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().
|
inlinestatic |
Append to the output area of PRETTY-PRINTER a string specified by its STARTing character and LENGTH.
References output_buffer_append_r(), and pp_buffer().
Referenced by pretty_printer::emit_prefix(), pp_append_text(), and pp_unicode_character().
void pp_append_text | ( | pretty_printer * | pp, |
const char * | start, | ||
const char * | end ) |
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().
void pp_begin_quote | ( | pretty_printer * | pp, |
bool | show_color ) |
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().
void pp_character | ( | pretty_printer * | pp, |
int | c ) |
Have PRETTY-PRINTER add a CHARACTER.
References output_buffer::m_line_length, pp_buffer(), pp_is_wrapping_line, pp_newline(), and pretty_printer::remaining_character_count_for_line().
Referenced by default_token_printer(), dump_binary_rhs(), dump_block_node(), dump_decl_name(), dump_function_name(), dump_generic_node(), dump_gimple_fmt(), dump_gimple_omp_return(), dump_gimple_omp_teams(), dump_loc(), dump_omp_clause(), dump_ternary_rhs(), diagnostic_event::meaning::dump_to_pp(), format_phase_2(), make_item_for_dump_dec(), pp_separate_with(), pretty_print_string(), json::array::print(), json::object::print(), diagnostic_text_output_format::print_any_cwe(), diagnostic_text_output_format::print_any_rules(), edited_file::print_content(), print_diff_line(), print_escaped_json_string(), print_escaped_string(), diagnostic_text_output_format::print_option_information(), sarif_builder::sarif_token_printer::print_tokens(), sarif_begin_embedded_link(), sarif_end_embedded_link(), simd_clone_mangle(), vrange_printer::visit(), vrange_printer::visit(), and vrange_printer::visit().
void pp_clear_output_area | ( | pretty_printer * | pp | ) |
Clear PRETTY-PRINTER output area text info.
References output_buffer::m_line_length, and pp_buffer().
Referenced by simple_diagnostic_path::add_event(), simple_diagnostic_path::add_thread_event(), sarif_builder::make_message_object_for_diagram(), sarif_builder::make_result_object(), sarif_result::on_nested_diagnostic(), json_output_format::on_report_diagnostic(), pp_write_text_as_dot_label_to_stream(), pp_write_text_as_html_like_dot_to_stream(), pp_write_text_to_stream(), and sarif_ice_notification::sarif_ice_notification().
void pp_destroy_prefix | ( | pretty_printer * | pp | ) |
Free PRETTY-PRINTER's prefix, a previously malloc()'d string.
Referenced by diagnostic_text_output_format::append_note().
void pp_end_quote | ( | pretty_printer * | pp, |
bool | show_color ) |
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().
void pp_flush | ( | pretty_printer * | pp | ) |
Flush the content of BUFFER onto the attached stream. This function does nothing unless pp->output_buffer->flush_p.
References pretty_printer::clear_state(), pp_buffer(), and pp_write_text_to_stream().
Referenced by default_diagnostic_text_finalizer(), dot_rdg_1(), draw_cfg_edges(), draw_cfg_node(), draw_cfg_node_succ_edges(), ana::one_way_id_map< T >::dump(), irange_bitmask::dump(), json::value::dump(), vrange::dump(), digraph< GraphTraits >::dump_dot_to_file(), dump_insn_slim(), dump_rtl_slim(), dump_ssaname_info_to_file(), dump_value_slim(), gimple_dump_bb_buff(), toplev::main(), diagnostic_text_output_format::on_diagram(), pp_newline_and_flush(), print_generic_expr(), print_gimple_expr(), print_graph_cfg(), print_node(), print_omp_context_selector(), diagnostic_text_output_format::print_path(), diagnostic_context::report_diagnostic(), start_graph_dump(), and tree_dump_pretty_printer::~tree_dump_pretty_printer().
void pp_format_verbatim | ( | pretty_printer * | pp, |
text_info * | text ) |
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().
const char * pp_formatted_text | ( | pretty_printer * | pp | ) |
Finishes constructing a NULL-terminated character string representing the PRETTY-PRINTED text.
References output_buffer_formatted_text(), and pp_buffer().
Referenced by simple_diagnostic_path::add_event(), gcc_rich_location::add_fixit_insert_formatted(), simple_diagnostic_path::add_thread_event(), attr_access::array_as_string(), asan_pp_string(), dump_context::begin_scope(), dump_pretty_printer::custom_token_printer::emit_any_pending_textual_chunks(), fixup_debug_use(), edit_context::generate_diff(), generate_results(), edited_file::get_content(), optrecord_json_writer::get_id_value_for_pass(), make_item_for_dump_dec(), make_item_for_dump_generic_expr(), make_item_for_dump_gimple_expr(), make_item_for_dump_gimple_stmt(), sarif_builder::make_location_object(), sarif_builder::make_message_object_for_diagram(), sarif_builder::make_reporting_descriptor_object_for_cwe_id(), sarif_builder::make_reporting_descriptor_reference_object_for_cwe_id(), sarif_builder::make_result_object(), sarif_result::on_nested_diagnostic(), json_output_format::on_report_diagnostic(), pp_write_text_as_dot_label_to_stream(), pp_write_text_as_html_like_dot_to_stream(), pp_write_text_to_stream(), print_generic_expr_to_str(), print_lto_docs_link(), sarif_ice_notification::sarif_ice_notification(), simd_clone_mangle(), starts_infinite_loop_p(), str_pattern_slim(), pair_fusion_bb_info::track_access(), ubsan_type_descriptor(), and optrecord_json_writer::write().
void pp_indent | ( | pretty_printer * | pp | ) |
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().
const char * pp_last_position_in_text | ( | const pretty_printer * | pp | ) |
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().
|
inlinestatic |
Same as pp_wrap_text but wrap text only when in line-wrapping mode.
References end(), pp_append_text(), pp_is_wrapping_line, and pp_wrap_text().
Referenced by pp_quoted_string(), pp_string(), and pp_string_n().
void pp_newline | ( | pretty_printer * | pp | ) |
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().
void pp_newline_and_flush | ( | pretty_printer * | pp | ) |
References pp_flush(), pp_needs_newline(), and pp_newline().
Referenced by diagnostic_context::error_recursion(), gimple_dump_bb_buff(), lhd_print_error_function(), print_generic_stmt(), print_generic_stmt_indented(), print_gimple_seq(), print_gimple_stmt(), diagnostic_context::report_diagnostic(), verbatim(), and diagnostic_text_output_format::~diagnostic_text_output_format().
void pp_newline_and_indent | ( | pretty_printer * | pp, |
int | n ) |
References pp_indent(), pp_indentation(), pp_needs_newline(), and pp_newline().
void pp_output_formatted_text | ( | pretty_printer * | pp, |
const urlifier * | urlifier ) |
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().
void pp_printf | ( | pretty_printer * | pp, |
const char * | msg, | ||
... ) |
Format a message into BUFFER a la printf.
References ap, errno, msg, pp_format(), and pp_output_formatted_text().
Referenced by attr_access::array_as_string(), dump_context::begin_scope(), do_niy(), draw_cfg_edges(), draw_cfg_node(), draw_cfg_node_succ_edges(), draw_cfg_nodes_for_loop(), dump_bb_for_graph(), dump_gimple_label(), dump_gimple_transaction(), dump_loc(), dump_ssaname_info(), ana::record_layout::item::dump_to_pp(), diagnostic_event::meaning::dump_to_pp(), gimple_dump_bb_for_graph(), lhd_print_error_function(), sarif_builder::make_reporting_descriptor_object_for_cwe_id(), sarif_builder::make_reporting_descriptor_reference_object_for_cwe_id(), pp_gimple_stmt_1(), diagnostic_text_output_format::print_any_cwe(), edited_file::print_diff_hunk(), print_escaped_string(), print_graph_cfg(), print_insn(), print_insn_with_notes(), print_parseable_fixits(), print_pattern(), vrange_printer::print_real_value(), print_value(), starts_infinite_loop_p(), and ubsan_type_descriptor().
|
static |
Append the leading N characters of STRING to the output area of PRETTY-PRINTER, quoting in hexadecimal non-printable characters. Setting N = -1 is as if N were set to strlen (STRING). The STRING may be line-wrapped if in appropriate mode.
References decode_utf8_char(), gcc_checking_assert, last, and pp_maybe_wrap_text().
Referenced by format_phase_2().
void pp_really_flush | ( | pretty_printer * | pp | ) |
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().
void pp_separate_with | ( | pretty_printer * | pp, |
char | c ) |
References pp_character(), and pp_space.
void pp_set_line_maximum_length | ( | pretty_printer * | pp, |
int | length ) |
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().
void pp_string | ( | pretty_printer * | pp, |
const char * | str ) |
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().
void pp_string_n | ( | pretty_printer * | pp, |
const char * | str, | ||
size_t | len ) |
As per pp_string, but only append the first LEN of STR.
References gcc_checking_assert, and pp_maybe_wrap_text().
char * pp_take_prefix | ( | pretty_printer * | pp | ) |
Take ownership of PP's prefix, setting it to NULL. This allows clients to save, override, and then restore an existing prefix, without it being free-ed.
Referenced by diagnostic_text_output_format::append_note(), default_diagnostic_text_finalizer(), lhd_print_error_function(), sarif_builder::make_message_object_for_diagram(), diagnostic_text_output_format::on_diagram(), diagnostic_text_output_format::print_any_cwe(), diagnostic_text_output_format::print_any_rules(), print_parseable_fixits(), and diagnostic_text_output_format::print_path().
void pp_unicode_character | ( | pretty_printer * | pp, |
unsigned | c ) |
Append code point C to the output area of PRETTY-PRINTER, encoding it as UTF-8.
References limits, and pp_append_r().
void pp_verbatim | ( | pretty_printer * | pp, |
const char * | msg, | ||
... ) |
Output MESSAGE verbatim into BUFFER.
References ap, errno, msg, and pp_format_verbatim().
Referenced by diagnostic_text_output_format::report_current_module(), and diagnostic_text_output_format::~diagnostic_text_output_format().
template void pp_wide_integer | ( | pretty_printer * | , |
const poly_int64 & | ) |
template void pp_wide_integer | ( | pretty_printer * | , |
const poly_uint16 & | ) |
template void pp_wide_integer | ( | pretty_printer * | , |
const poly_uint64 & | ) |
void pp_wide_integer | ( | pretty_printer * | pp, |
const poly_int< N, T > & | x ) |
Print X to PP in decimal.
References poly_int< N, C >::coeffs, i, poly_int< N, C >::is_constant(), N, pp_comma, pp_left_bracket, pp_right_bracket, and pp_wide_integer().
Referenced by asan_emit_stack_protection(), dump_array_domain(), dump_generic_node(), format_phase_2(), pp_double_int(), pp_wide_integer(), and print_value().
|
static |
Wrap a text delimited by START and END into PRETTY-PRINTER.
References end(), pp_append_text(), pp_is_wrapping_line, pp_newline(), pp_space, and pretty_printer::remaining_character_count_for_line().
Referenced by pp_maybe_wrap_text().
void pp_write_text_as_dot_label_to_stream | ( | pretty_printer * | pp, |
bool | for_record ) |
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().
void pp_write_text_as_html_like_dot_to_stream | ( | pretty_printer * | pp | ) |
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 "'" or in HTML as "'");. 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().
void pp_write_text_to_stream | ( | pretty_printer * | pp | ) |
Flush the formatted text of PRETTY-PRINTER onto the attached stream.
References pp_buffer(), pp_clear_output_area(), and pp_formatted_text().
Referenced by graphviz_out::begin_td(), graphviz_out::begin_tr(), graphviz_out::begin_trtd(), draw_cfg_node(), dump_bb_for_graph(), graphviz_out::end_td(), graphviz_out::end_tdtr(), graphviz_out::end_tr(), gimple_dump_bb_for_graph(), pp_flush(), pp_really_flush(), print_generic_decl(), rtl_dump_bb_for_graph(), and start_graph_dump().
|
static |
Finish any text accumulating within CUR_OBSTACK, terminating it. Push a text pp_token to the end of TOK_LIST containing a borrowed copy of the text in CUR_OBSTACK.
References pp_token_list::push_back_text().
Referenced by pp_markup::context::begin_highlight_color(), pp_markup::context::end_highlight_color(), pp_markup::context::end_quote(), format_phase_1(), and format_phase_2().
void *(* identifier_to_locale_alloc) (size_t) | ( | size_t | ) | = xmalloc |
Allocator for identifier_to_locale and corresponding function to free memory.
Referenced by general_init(), and identifier_to_locale().
void(* identifier_to_locale_free) (void *) | ( | void * | ) | = free |
Referenced by general_init(), and identifier_to_locale().