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-urlifier.h"
#include "diagnostic-color.h"
#include "diagnostic-event-id.h"
#include "selftest.h"
Data Structures | |
class | quoting_info |
struct | quoting_info::location |
struct | quoting_info::run |
struct | auto_obstack |
Macros | |
#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_VECTOR |
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/>.
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 pp_format().
#define PTRDIFF_MAX INTTYPE_MAXIMUM (ptrdiff_t) |
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.
References abort, ggc_alloc(), and i.
Referenced by identifier_to_locale(), and pp_quoted_string().
|
static |
Helper function for pp_end_url and pp_format, return the "close URL" escape sequence string.
References gcc_unreachable, pretty_printer::url_format, URL_FORMAT_BEL, URL_FORMAT_NONE, and URL_FORMAT_ST.
Referenced by pp_end_url(), pp_format(), and urlify_quoted_string().
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, ggc_alloc(), i, identifier_to_locale_alloc, identifier_to_locale_free, locale_encoding, locale_utf8, and NULL.
Referenced by announce_function(), default_tree_make_json_for_path(), default_tree_printer(), dump_fancy_name(), expand_expr_real_1(), 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().
Append STR to OSTACK, without a null-terminator.
References ggc_alloc().
Referenced by urlify_quoted_string().
Append STR to OSTACK, without a null-terminator.
References ggc_alloc().
|
static |
References output_buffer::cur_chunk_array, ggc_alloc(), chunk_info::m_quotes, and quoting_info::on_begin_quote().
Referenced by pp_format().
|
static |
References output_buffer::cur_chunk_array, ggc_alloc(), chunk_info::m_quotes, and quoting_info::on_end_quote().
Referenced by pp_format().
|
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 pp_append_text(), pp_emit_prefix(), and pp_unicode_character().
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 end(), pp_append_r(), pp_buffer, pp_emit_prefix(), and pp_is_wrapping_line.
Referenced by dump_fancy_name(), pp_format(), 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 decls_mismatched_attributes(), and pp_format().
void pp_begin_url | ( | pretty_printer * | pp, |
const char * | url ) |
Support for encoding URLs. See egmontkob/Hyperlinks_in_Terminal_Emulators.md ( https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda ). > A hyperlink is opened upon encountering an OSC 8 escape sequence with > the target URI. The syntax is > > OSC 8 ; params ; URI ST > > A hyperlink is closed with the same escape sequence, omitting the > parameters and the URI but keeping the separators: > > OSC 8 ; ; ST > > OSC (operating system command) is typically ESC ]. Use BEL instead of ST, as that is currently rendered better in some terminal emulators that don't support OSC 8, like konsole.
If URL-printing is enabled, write an "open URL" escape sequence to PP for the given URL.
References gcc_unreachable, ggc_alloc(), pretty_printer::m_skipping_null_url, pp_string(), pretty_printer::url_format, URL_FORMAT_BEL, URL_FORMAT_NONE, and URL_FORMAT_ST.
Referenced by pp_format(), diagnostic_context::print_any_cwe(), diagnostic_context::print_any_rules(), print_lto_docs_link(), and diagnostic_context::print_option_information().
void pp_character | ( | pretty_printer * | pp, |
int | c ) |
Have PRETTY-PRINTER add a CHARACTER.
References ggc_alloc(), obstack, pp_buffer, pp_is_wrapping_line, pp_newline(), and pp_remaining_character_count_for_line().
Referenced by 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(), make_item_for_dump_dec(), pp_format(), pp_separate_with(), pretty_print_string(), json::object::print(), json::array::print(), diagnostic_context::print_any_cwe(), diagnostic_context::print_any_rules(), edited_file::print_content(), print_diff_line(), print_escaped_json_string(), print_escaped_string(), diagnostic_context::print_option_information(), 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 ggc_alloc(), obstack, 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(), json_output_format::on_end_diagnostic(), sarif_result::on_nested_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().
|
inlinestatic |
Clear PRETTY-PRINTER's output state.
References pretty_printer::emitted_prefix, and pp_indentation.
Referenced by pp_flush(), pp_format(), and pp_really_flush().
void pp_destroy_prefix | ( | pretty_printer * | pp | ) |
Free PRETTY-PRINTER's prefix, a previously malloc()'d string.
References free(), NULL, and pretty_printer::prefix.
Referenced by diagnostic_append_note().
void pp_emit_prefix | ( | pretty_printer * | pp | ) |
Write out PRETTY-PRINTER's prefix.
References DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE, DIAGNOSTICS_SHOW_PREFIX_NEVER, DIAGNOSTICS_SHOW_PREFIX_ONCE, pretty_printer::emitted_prefix, ggc_alloc(), NULL, pp_append_r(), pp_indent(), pp_indentation, pp_prefixing_rule, and pretty_printer::prefix.
Referenced by pp_append_text().
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 decls_mismatched_attributes(), and pp_format().
void pp_end_url | ( | pretty_printer * | pp | ) |
If URL-printing is enabled, write a "close URL" escape sequence to PP.
References get_end_url_string(), pretty_printer::m_skipping_null_url, pp_string(), pretty_printer::url_format, and URL_FORMAT_NONE.
Referenced by diagnostic_context::print_any_cwe(), diagnostic_context::print_any_rules(), print_lto_docs_link(), and diagnostic_context::print_option_information().
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::buffer, output_buffer::flush_p, ggc_alloc(), pp_buffer, pp_clear_state(), and pp_write_text_to_stream().
Referenced by default_diagnostic_finalizer(), default_tree_diagnostic_path_printer(), dot_rdg_1(), draw_cfg_edges(), draw_cfg_node(), draw_cfg_node_succ_edges(), ana::one_way_id_map< T >::dump(), vrange::dump(), irange_bitmask::dump(), json::value::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_context::report_diagnostic(), and start_graph_dump().
void pp_format | ( | pretty_printer * | pp, |
text_info * | text, | ||
const urlifier * | urlifier ) |
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. 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.
Formatting phases 1 and 2: render TEXT->format_spec plus text->m_args_ptr into a series of chunks in pp_buffer (PP)->args[]. Phase 3 is in pp_output_formatted_text. If URLIFIER is non-NULL, then use it to add URLs for quoted strings, so that e.g. "before %<quoted%> after" with a URLIFIER that has a URL for "quoted" might be emitted as: "before `BEGIN_URL(http://example.com)quotedEND_URL' after" This is handled here for message fragments that are: - quoted entirely in phase 1 (e.g. "%<this is quoted%>"), or - quoted entirely in phase 2 (e.g. "%qs"), Quoted fragments that use a mixture of both phases (e.g. "%<this is a mixture: %s %>") are stashed into the output_buffer's m_quotes for use in phase 3.
References chunk_info::args, output_buffer::chunk_obstack, close_quote, colorize_start(), colorize_stop(), output_buffer::cur_chunk_array, end(), output_buffer::formatted_obstack, gcc_assert, gcc_unreachable, get_end_url_string(), ggc_alloc(), format_postprocessor::handle(), HOST_WIDE_INT_PRINT, HOST_WIDE_INT_PRINT_HEX, HOST_WIDE_INT_PRINT_UNSIGNED, i, output_buffer::line_length, pretty_printer::m_format_postprocessor, output_buffer::obstack, on_begin_quote(), on_end_quote(), open_quote, pp_append_text(), pp_begin_quote(), pp_begin_url(), pp_buffer, pp_character(), pp_clear_state(), pp_comma, pp_decimal_int, pp_double, pp_end_quote(), pp_format_decoder, pp_integer_with_precision, PP_NL_ARGMAX, pp_pointer, pp_quoted_string(), pp_scalar, pp_set_verbatim_wrapping, pp_show_color, pp_space, pp_string(), pp_wide_integer(), and pp_wrapping_mode.
Referenced by simple_diagnostic_path::add_event(), simple_diagnostic_path::add_thread_event(), diagnostic_append_note(), dump_context::dump_printf_va(), opt_problem::opt_problem(), pp_format_verbatim(), pp_printf(), graphviz_out::print(), graphviz_out::println(), and diagnostic_context::report_diagnostic().
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 ggc_alloc(), 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::emit_any_pending_textual_chunks(), 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_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(), maybe_diag_alias_attributes(), json_output_format::on_end_diagnostic(), sarif_result::on_nested_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(), 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 pp_emit_prefix(), pp_newline_and_indent(), json::object::print(), and json::array::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.
void pp_maybe_space | ( | pretty_printer * | pp | ) |
Maybe print out a whitespace if needed.
References pretty_printer::padding, pp_none, and pp_space.
|
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 quoting_info::handle_phase_3(), pp_quoted_string(), and pp_string().
void pp_newline | ( | pretty_printer * | pp | ) |
Have PRETTY-PRINTER start a new line.
References ggc_alloc(), obstack, pp_buffer, and pp_needs_newline.
Referenced by gcc_rich_location::add_fixit_insert_formatted(), dump_context::begin_scope(), default_diagnostic_finalizer(), default_diagnostic_start_span_fn(), diagnostic_append_note(), 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::object::print(), json::array::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_context::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 ) |
Format of a message pointed to by TEXT. 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.
References chunk_info::args, output_buffer::chunk_obstack, output_buffer::cur_chunk_array, output_buffer::formatted_obstack, gcc_assert, ggc_alloc(), quoting_info::handle_phase_3(), quoting_info::has_phase_3_quotes_p(), chunk_info::m_quotes, output_buffer::obstack, pp_buffer, pp_string(), pretty_printer::url_format, and URL_FORMAT_NONE.
Referenced by simple_diagnostic_path::add_event(), simple_diagnostic_path::add_thread_event(), diagnostic_append_note(), pp_format_verbatim(), pp_printf(), graphviz_out::print(), graphviz_out::println(), and diagnostic_context::report_diagnostic().
void pp_printf | ( | pretty_printer * | pp, |
const char * | msg, | ||
... ) |
Format a message into BUFFER a la printf.
References ap, errno, ggc_alloc(), 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_context::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().
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, ggc_alloc(), last, and pp_maybe_wrap_text().
Referenced by pp_format().
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 ggc_alloc(), pp_buffer, pp_clear_state(), and pp_write_text_to_stream().
int pp_remaining_character_count_for_line | ( | pretty_printer * | pp | ) |
Return the amount of characters PRETTY-PRINTER can accept to make a full line. Meaningful only in line-wrapping mode.
References pretty_printer::maximum_length, and pp_buffer.
Referenced by pp_character(), and pp_wrap_text().
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 pp_set_real_maximum_length().
Referenced by common_handle_option().
void pp_set_prefix | ( | pretty_printer * | pp, |
char * | prefix ) |
Set PREFIX for PRETTY-PRINTER, taking ownership of PREFIX, which will eventually be free-ed.
References pretty_printer::emitted_prefix, free(), pp_indentation, pp_set_real_maximum_length(), and pretty_printer::prefix.
Referenced by default_diagnostic_finalizer(), default_diagnostic_starter(), default_tree_diagnostic_path_printer(), default_tree_diagnostic_starter(), diagnostic_append_note(), lhd_print_error_function(), sarif_builder::make_message_object_for_diagram(), diagnostic_text_output_format::on_diagram(), pretty_printer::pretty_printer(), pretty_printer::pretty_printer(), diagnostic_context::print_any_cwe(), diagnostic_context::print_any_rules(), and print_parseable_fixits().
|
static |
Subroutine of pp_set_maximum_length. Set up PRETTY-PRINTER's internal maximum characters per line.
References DIAGNOSTICS_SHOW_PREFIX_NEVER, DIAGNOSTICS_SHOW_PREFIX_ONCE, ggc_alloc(), pretty_printer::maximum_length, pp_is_wrapping_line, pp_line_cutoff, pp_prefixing_rule, and pretty_printer::prefix.
Referenced by pp_set_line_maximum_length(), and pp_set_prefix().
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, ggc_alloc(), and pp_maybe_wrap_text().
Referenced by gcc_rich_location::add_fixit_insert_formatted(), asan_add_global(), asan_dynamic_init_call(), asan_emit_stack_protection(), graphviz_out::begin_td(), graphviz_out::begin_tr(), graphviz_out::begin_trtd(), decls_mismatched_attributes(), default_diagnostic_start_span_fn(), 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::record_layout::item::dump_to_pp(), ana::one_way_id_map< T >::dump_to_pp(), diagnostic_event::meaning::dump_to_pp(), dump_unary_rhs(), dump_context::emit_item(), dump_pretty_printer::emit_items(), graphviz_out::end_td(), graphviz_out::end_tdtr(), graphviz_out::end_tr(), gimple_dump_bb_for_graph(), pp_begin_quote(), pp_begin_url(), pp_cfg_jump(), pp_double_int(), pp_end_quote(), pp_end_url(), pp_format(), pp_gimple_stmt_1(), pp_output_formatted_text(), pp_points_to_solution(), pp_wide_int_large(), pretty_print_string(), ana::dynamic_call_info_t::print(), ana::rewind_info_t::print(), json::object::print(), json::array::print(), json::float_number::print(), json::integer_number::print(), json::literal::print(), diagnostic_context::print_any_cwe(), diagnostic_context::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_context::print_option_information(), print_parseable_fixits(), print_pattern(), vrange_printer::print_real_value(), edited_file::print_run_of_changed_lines(), print_struct_decl(), print_value(), simd_clone_mangle(), start_graph_dump(), ubsan_type_descriptor(), vrange_printer::visit(), vrange_printer::visit(), vrange_printer::visit(), and vrange_printer::visit().
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.
References NULL, and pretty_printer::prefix.
Referenced by default_diagnostic_finalizer(), default_tree_diagnostic_path_printer(), diagnostic_append_note(), lhd_print_error_function(), sarif_builder::make_message_object_for_diagram(), diagnostic_text_output_format::on_diagram(), diagnostic_context::print_any_cwe(), diagnostic_context::print_any_rules(), and print_parseable_fixits().
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 ggc_alloc(), limits, and pp_append_r().
void pp_verbatim | ( | pretty_printer * | pp, |
const char * | msg, | ||
... ) |
Output MESSAGE verbatim into BUFFER.
References ap, errno, ggc_alloc(), msg, and pp_format_verbatim().
Referenced by diagnostic_context::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 & | ) |
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(), pp_double_int(), pp_format(), pp_wide_integer(), and print_value().
Wrap a text delimited by START and END into PRETTY-PRINTER.
References end(), ggc_alloc(), pp_append_text(), pp_is_wrapping_line, pp_newline(), pp_remaining_character_count_for_line(), and pp_space.
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, ggc_alloc(), 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(), ggc_alloc(), 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 ggc_alloc(), 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 |
Given quoted text within the buffer OBSTACK at the half-open interval [QUOTED_TEXT_START_IDX, QUOTED_TEXT_END_IDX), potentially use URLIFIER (if non-null) to see if there's a URL for the quoted text. If so, replace the quoted part of the text in the buffer with a URLified version of the text, using PP's settings. For example, given this is the buffer: "this is a test `hello worldTRAILING-CONTENT" .................^~~~~~~~~~~ with the quoted text starting at the 'h' of "hello world", the buffer becomes: "this is a test `BEGIN_URL(URL)hello worldEND(URL)TRAILING-CONTENT" .................^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .................-----------replacement----------- Return the new offset into the buffer of the quoted text endpoint i.e. the offset of "TRAILING-CONTENT" in the above.
References free(), gcc_unreachable, get_end_url_string(), urlifier::get_url_for_quoted_text(), ggc_alloc(), obstack, obstack_append_string(), pretty_printer::url_format, URL_FORMAT_BEL, URL_FORMAT_NONE, and URL_FORMAT_ST.
Referenced by quoting_info::handle_phase_3(), and quoting_info::on_end_quote().
Allocator for identifier_to_locale and corresponding function to free memory.
Referenced by general_init(), and identifier_to_locale().
Referenced by general_init(), and identifier_to_locale().