aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ada/gcc-interface/misc.cc5
-rw-r--r--gcc/analyzer/analyzer-logging.cc5
-rw-r--r--gcc/analyzer/analyzer.cc15
-rw-r--r--gcc/analyzer/pending-diagnostic.cc7
-rw-r--r--gcc/c/c-objc-common.cc4
-rw-r--r--gcc/cp/error.cc8
-rw-r--r--gcc/d/d-diagnostic.cc6
-rw-r--r--gcc/diagnostic.cc33
-rw-r--r--gcc/dumpfile.cc13
-rw-r--r--gcc/fortran/error.cc2
-rw-r--r--gcc/graphviz.cc10
-rw-r--r--gcc/opt-problem.cc6
-rw-r--r--gcc/pretty-print.cc63
-rw-r--r--gcc/pretty-print.h24
-rw-r--r--gcc/text-art/styled-string.cc5
-rw-r--r--gcc/tree-diagnostic.cc6
-rw-r--r--gcc/tree-pretty-print.h2
17 files changed, 81 insertions, 133 deletions
diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc
index 269c15e4..453ae80 100644
--- a/gcc/ada/gcc-interface/misc.cc
+++ b/gcc/ada/gcc-interface/misc.cc
@@ -293,7 +293,6 @@ static void
internal_error_function (diagnostic_context *context, const char *msgid,
va_list *ap)
{
- text_info tinfo;
char *buffer, *p, *loc;
String_Template temp, temp_loc;
String_Pointer sp, sp_loc;
@@ -309,9 +308,7 @@ internal_error_function (diagnostic_context *context, const char *msgid,
pp_clear_output_area (context->printer);
/* Format the message into the pretty-printer. */
- tinfo.format_spec = msgid;
- tinfo.args_ptr = ap;
- tinfo.err_no = errno;
+ text_info tinfo (msgid, ap, errno);
pp_format_verbatim (context->printer, &tinfo);
/* Extract a (writable) pointer to the formatted text. */
diff --git a/gcc/analyzer/analyzer-logging.cc b/gcc/analyzer/analyzer-logging.cc
index b78481c..ddfbb5b 100644
--- a/gcc/analyzer/analyzer-logging.cc
+++ b/gcc/analyzer/analyzer-logging.cc
@@ -144,10 +144,7 @@ logger::log_partial (const char *fmt, ...)
void
logger::log_va_partial (const char *fmt, va_list *ap)
{
- text_info text;
- text.format_spec = fmt;
- text.args_ptr = ap;
- text.err_no = 0;
+ text_info text (fmt, ap, 0);
pp_format (m_pp, &text);
pp_output_formatted_text (m_pp);
}
diff --git a/gcc/analyzer/analyzer.cc b/gcc/analyzer/analyzer.cc
index 94c5cf2..9d4bc78 100644
--- a/gcc/analyzer/analyzer.cc
+++ b/gcc/analyzer/analyzer.cc
@@ -425,19 +425,13 @@ make_label_text (bool can_colorize, const char *fmt, ...)
if (!can_colorize)
pp_show_color (pp) = false;
- text_info ti;
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
va_list ap;
va_start (ap, fmt);
- ti.format_spec = _(fmt);
- ti.args_ptr = ≈
- ti.err_no = 0;
- ti.x_data = NULL;
- ti.m_richloc = &rich_loc;
-
+ text_info ti (_(fmt), &ap, 0, NULL, &rich_loc);
pp_format (pp, &ti);
pp_output_formatted_text (pp);
@@ -461,7 +455,6 @@ make_label_text_n (bool can_colorize, unsigned HOST_WIDE_INT n,
if (!can_colorize)
pp_show_color (pp) = false;
- text_info ti;
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
va_list ap;
@@ -470,11 +463,7 @@ make_label_text_n (bool can_colorize, unsigned HOST_WIDE_INT n,
const char *fmt = ngettext (singular_fmt, plural_fmt, n);
- ti.format_spec = fmt;
- ti.args_ptr = ≈
- ti.err_no = 0;
- ti.x_data = NULL;
- ti.m_richloc = &rich_loc;
+ text_info ti (fmt, &ap, 0, NULL, &rich_loc);
pp_format (pp, &ti);
pp_output_formatted_text (pp);
diff --git a/gcc/analyzer/pending-diagnostic.cc b/gcc/analyzer/pending-diagnostic.cc
index e36ed4f..c7d3370 100644
--- a/gcc/analyzer/pending-diagnostic.cc
+++ b/gcc/analyzer/pending-diagnostic.cc
@@ -96,15 +96,10 @@ evdesc::event_desc::formatted_print (const char *fmt, ...) const
pp_show_color (pp) = m_colorize;
- text_info ti;
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
va_list ap;
va_start (ap, fmt);
- ti.format_spec = _(fmt);
- ti.args_ptr = ≈
- ti.err_no = 0;
- ti.x_data = NULL;
- ti.m_richloc = &rich_loc;
+ text_info ti (_(fmt), &ap, 0, nullptr, &rich_loc);
pp_format (pp, &ti);
pp_output_formatted_text (pp);
va_end (ap);
diff --git a/gcc/c/c-objc-common.cc b/gcc/c/c-objc-common.cc
index e4aed61..c8f49aa 100644
--- a/gcc/c/c-objc-common.cc
+++ b/gcc/c/c-objc-common.cc
@@ -272,7 +272,7 @@ c_tree_printer (pretty_printer *pp, text_info *text, const char *spec,
if (*spec != 'v')
{
- t = va_arg (*text->args_ptr, tree);
+ t = va_arg (*text->m_args_ptr, tree);
if (set_locus)
text->set_location (0, DECL_SOURCE_LOCATION (t),
SHOW_RANGE_WITH_CARET);
@@ -316,7 +316,7 @@ c_tree_printer (pretty_printer *pp, text_info *text, const char *spec,
return true;
case 'v':
- pp_c_cv_qualifiers (cpp, va_arg (*text->args_ptr, int), hash);
+ pp_c_cv_qualifiers (cpp, va_arg (*text->m_args_ptr, int), hash);
return true;
default:
diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index 8a5219a..ef96e14 100644
--- a/gcc/cp/error.cc
+++ b/gcc/cp/error.cc
@@ -4454,10 +4454,10 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec,
const char *result;
tree t = NULL;
-#define next_tree (t = va_arg (*text->args_ptr, tree))
-#define next_tcode ((enum tree_code) va_arg (*text->args_ptr, int))
-#define next_lang ((enum languages) va_arg (*text->args_ptr, int))
-#define next_int va_arg (*text->args_ptr, int)
+#define next_tree (t = va_arg (*text->m_args_ptr, tree))
+#define next_tcode ((enum tree_code) va_arg (*text->m_args_ptr, int))
+#define next_lang ((enum languages) va_arg (*text->m_args_ptr, int))
+#define next_int va_arg (*text->m_args_ptr, int)
if (precision != 0 || wide)
return false;
diff --git a/gcc/d/d-diagnostic.cc b/gcc/d/d-diagnostic.cc
index 57f36f2..be779d9 100644
--- a/gcc/d/d-diagnostic.cc
+++ b/gcc/d/d-diagnostic.cc
@@ -205,11 +205,7 @@ d_diagnostic_report_diagnostic (const Loc &loc, int opt, const char *format,
else
{
/* Write verbatim messages with no location direct to stream. */
- text_info text;
- text.err_no = errno;
- text.args_ptr = &argp;
- text.format_spec = expand_d_format (format);
- text.x_data = NULL;
+ text_info text (expand_d_format (format), &argp, errno, nullptr);
pp_format_verbatim (global_dc->printer, &text);
pp_newline_and_flush (global_dc->printer);
diff --git a/gcc/diagnostic.cc b/gcc/diagnostic.cc
index 65a7884..9c15f0d 100644
--- a/gcc/diagnostic.cc
+++ b/gcc/diagnostic.cc
@@ -348,9 +348,9 @@ diagnostic_set_info_translated (diagnostic_info *diagnostic, const char *msg,
diagnostic_t kind)
{
gcc_assert (richloc);
- diagnostic->message.err_no = errno;
- diagnostic->message.args_ptr = args;
- diagnostic->message.format_spec = msg;
+ diagnostic->message.m_err_no = errno;
+ diagnostic->message.m_args_ptr = args;
+ diagnostic->message.m_format_spec = msg;
diagnostic->message.m_richloc = richloc;
diagnostic->richloc = richloc;
diagnostic->metadata = NULL;
@@ -1529,7 +1529,7 @@ diagnostic_report_diagnostic (diagnostic_context *context,
&& diagnostic->kind == DK_WARNING)
diagnostic->kind = DK_ERROR;
- diagnostic->message.x_data = &diagnostic->x_data;
+ diagnostic->message.m_data = &diagnostic->x_data;
/* Check to see if the diagnostic is enabled at the location and
not disabled by #pragma GCC diagnostic anywhere along the inlining
@@ -1565,8 +1565,8 @@ diagnostic_report_diagnostic (diagnostic_context *context,
}
if (context->internal_error)
(*context->internal_error) (context,
- diagnostic->message.format_spec,
- diagnostic->message.args_ptr);
+ diagnostic->message.m_format_spec,
+ diagnostic->message.m_args_ptr);
}
if (diagnostic->kind == DK_ERROR && orig_diag_kind == DK_WARNING)
++diagnostic_kind_count (context, DK_WERROR);
@@ -1678,14 +1678,10 @@ trim_filename (const char *name)
void
verbatim (const char *gmsgid, ...)
{
- text_info text;
va_list ap;
va_start (ap, gmsgid);
- text.err_no = errno;
- text.args_ptr = ≈
- text.format_spec = _(gmsgid);
- text.x_data = NULL;
+ text_info text (_(gmsgid), &ap, errno);
pp_format_verbatim (global_dc->printer, &text);
pp_newline_and_flush (global_dc->printer);
va_end (ap);
@@ -2470,19 +2466,13 @@ simple_diagnostic_path::add_event (location_t loc, tree fndecl, int depth,
pretty_printer *pp = m_event_pp;
pp_clear_output_area (pp);
- text_info ti;
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
va_list ap;
va_start (ap, fmt);
- ti.format_spec = _(fmt);
- ti.args_ptr = ≈
- ti.err_no = 0;
- ti.x_data = NULL;
- ti.m_richloc = &rich_loc;
-
+ text_info ti (_(fmt), &ap, 0, nullptr, &rich_loc);
pp_format (pp, &ti);
pp_output_formatted_text (pp);
@@ -2507,18 +2497,13 @@ simple_diagnostic_path::add_thread_event (diagnostic_thread_id_t thread_id,
pretty_printer *pp = m_event_pp;
pp_clear_output_area (pp);
- text_info ti;
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
va_list ap;
va_start (ap, fmt);
- ti.format_spec = _(fmt);
- ti.args_ptr = ≈
- ti.err_no = 0;
- ti.x_data = NULL;
- ti.m_richloc = &rich_loc;
+ text_info ti (_(fmt), &ap, 0, nullptr, &rich_loc);
pp_format (pp, &ti);
pp_output_formatted_text (pp);
diff --git a/gcc/dumpfile.cc b/gcc/dumpfile.cc
index a2050d1..1e72aaf 100644
--- a/gcc/dumpfile.cc
+++ b/gcc/dumpfile.cc
@@ -951,7 +951,7 @@ dump_pretty_printer::decode_format (text_info *text, const char *spec,
{
case 'C':
{
- cgraph_node *node = va_arg (*text->args_ptr, cgraph_node *);
+ cgraph_node *node = va_arg (*text->m_args_ptr, cgraph_node *);
/* Make an item for the node, and stash it. */
optinfo_item *item = make_item_for_dump_symtab_node (node);
@@ -961,7 +961,7 @@ dump_pretty_printer::decode_format (text_info *text, const char *spec,
case 'E':
{
- gimple *stmt = va_arg (*text->args_ptr, gimple *);
+ gimple *stmt = va_arg (*text->m_args_ptr, gimple *);
/* Make an item for the stmt, and stash it. */
optinfo_item *item = make_item_for_dump_gimple_expr (stmt, 0, TDF_SLIM);
@@ -971,7 +971,7 @@ dump_pretty_printer::decode_format (text_info *text, const char *spec,
case 'G':
{
- gimple *stmt = va_arg (*text->args_ptr, gimple *);
+ gimple *stmt = va_arg (*text->m_args_ptr, gimple *);
/* Make an item for the stmt, and stash it. */
optinfo_item *item = make_item_for_dump_gimple_stmt (stmt, 0, TDF_SLIM);
@@ -981,7 +981,7 @@ dump_pretty_printer::decode_format (text_info *text, const char *spec,
case 'T':
{
- tree t = va_arg (*text->args_ptr, tree);
+ tree t = va_arg (*text->m_args_ptr, tree);
/* Make an item for the tree, and stash it. */
optinfo_item *item = make_item_for_dump_generic_expr (t, TDF_SLIM);
@@ -1002,10 +1002,7 @@ dump_context::dump_printf_va (const dump_metadata_t &metadata, const char *forma
{
dump_pretty_printer pp (this, metadata.get_dump_flags ());
- text_info text;
- text.err_no = errno;
- text.args_ptr = ap;
- text.format_spec = format;
+ text_info text (format, ap, errno);
/* Phases 1 and 2, using pp_format. */
pp_format (&pp, &text);
diff --git a/gcc/fortran/error.cc b/gcc/fortran/error.cc
index 0b6c850..1b34619 100644
--- a/gcc/fortran/error.cc
+++ b/gcc/fortran/error.cc
@@ -1074,7 +1074,7 @@ gfc_format_decoder (pretty_printer *pp, text_info *text, const char *spec,
if (*spec == 'C')
loc = &gfc_current_locus;
else
- loc = va_arg (*text->args_ptr, locus *);
+ loc = va_arg (*text->m_args_ptr, locus *);
gcc_assert (loc->nextc - loc->lb->line >= 0);
unsigned int offset = loc->nextc - loc->lb->line;
if (*spec == 'C' && *loc->nextc != '\0')
diff --git a/gcc/graphviz.cc b/gcc/graphviz.cc
index 177fc20..ea7bb9d 100644
--- a/gcc/graphviz.cc
+++ b/gcc/graphviz.cc
@@ -36,13 +36,10 @@ graphviz_out::graphviz_out (pretty_printer *pp)
void
graphviz_out::print (const char *fmt, ...)
{
- text_info text;
va_list ap;
va_start (ap, fmt);
- text.err_no = errno;
- text.args_ptr = ≈
- text.format_spec = fmt;
+ text_info text (fmt, &ap, errno);
pp_format (m_pp, &text);
pp_output_formatted_text (m_pp);
va_end (ap);
@@ -54,15 +51,12 @@ graphviz_out::print (const char *fmt, ...)
void
graphviz_out::println (const char *fmt, ...)
{
- text_info text;
va_list ap;
write_indent ();
va_start (ap, fmt);
- text.err_no = errno;
- text.args_ptr = ≈
- text.format_spec = fmt;
+ text_info text (fmt, &ap, errno);
pp_format (m_pp, &text);
pp_output_formatted_text (m_pp);
va_end (ap);
diff --git a/gcc/opt-problem.cc b/gcc/opt-problem.cc
index 9917271..ae85df3 100644
--- a/gcc/opt-problem.cc
+++ b/gcc/opt-problem.cc
@@ -62,10 +62,8 @@ opt_problem::opt_problem (const dump_location_t &loc,
{
dump_pretty_printer pp (&dump_context::get (), MSG_MISSED_OPTIMIZATION);
- text_info text;
- text.err_no = errno;
- text.args_ptr = ap;
- text.format_spec = fmt; /* No i18n is performed. */
+ text_info text (fmt, /* No i18n is performed. */
+ ap, errno);
/* Phases 1 and 2, using pp_format. */
pp_format (&pp, &text);
diff --git a/gcc/pretty-print.cc b/gcc/pretty-print.cc
index ee01d89..75446cc 100644
--- a/gcc/pretty-print.cc
+++ b/gcc/pretty-print.cc
@@ -1063,7 +1063,7 @@ static const char *get_end_url_string (pretty_printer *);
A format string can have at most 30 arguments. */
/* Formatting phases 1 and 2: render TEXT->format_spec plus
- TEXT->args_ptr into a series of chunks in pp_buffer (PP)->args[].
+ text->m_args_ptr into a series of chunks in pp_buffer (PP)->args[].
Phase 3 is in pp_output_formatted_text. */
void
@@ -1093,7 +1093,7 @@ pp_format (pretty_printer *pp, text_info *text)
memset (formatters, 0, sizeof formatters);
- for (p = text->format_spec; *p; )
+ for (p = text->m_format_spec; *p; )
{
while (*p != '\0' && *p != '%')
{
@@ -1157,7 +1157,7 @@ pp_format (pretty_printer *pp, text_info *text)
case 'm':
{
- const char *errstr = xstrerror (text->err_no);
+ const char *errstr = xstrerror (text->m_err_no);
obstack_grow (&buffer->chunk_obstack, errstr, strlen (errstr));
}
p++;
@@ -1316,7 +1316,7 @@ pp_format (pretty_printer *pp, text_info *text)
{
case 'r':
pp_string (pp, colorize_start (pp_show_color (pp),
- va_arg (*text->args_ptr,
+ va_arg (*text->m_args_ptr,
const char *)));
break;
@@ -1325,7 +1325,7 @@ pp_format (pretty_printer *pp, text_info *text)
/* When quoting, print alphanumeric, punctuation, and the space
character unchanged, and all others in hexadecimal with the
"\x" prefix. Otherwise print them all unchanged. */
- int chr = va_arg (*text->args_ptr, int);
+ int chr = va_arg (*text->m_args_ptr, int);
if (ISPRINT (chr) || !quote)
pp_character (pp, chr);
else
@@ -1339,49 +1339,49 @@ pp_format (pretty_printer *pp, text_info *text)
case 'd':
case 'i':
if (wide)
- pp_wide_integer (pp, va_arg (*text->args_ptr, HOST_WIDE_INT));
+ pp_wide_integer (pp, va_arg (*text->m_args_ptr, HOST_WIDE_INT));
else
pp_integer_with_precision
- (pp, *text->args_ptr, precision, int, "d");
+ (pp, *text->m_args_ptr, precision, int, "d");
break;
case 'o':
if (wide)
pp_scalar (pp, "%" HOST_WIDE_INT_PRINT "o",
- va_arg (*text->args_ptr, unsigned HOST_WIDE_INT));
+ va_arg (*text->m_args_ptr, unsigned HOST_WIDE_INT));
else
pp_integer_with_precision
- (pp, *text->args_ptr, precision, unsigned, "o");
+ (pp, *text->m_args_ptr, precision, unsigned, "o");
break;
case 's':
if (quote)
- pp_quoted_string (pp, va_arg (*text->args_ptr, const char *));
+ pp_quoted_string (pp, va_arg (*text->m_args_ptr, const char *));
else
- pp_string (pp, va_arg (*text->args_ptr, const char *));
+ pp_string (pp, va_arg (*text->m_args_ptr, const char *));
break;
case 'p':
- pp_pointer (pp, va_arg (*text->args_ptr, void *));
+ pp_pointer (pp, va_arg (*text->m_args_ptr, void *));
break;
case 'u':
if (wide)
pp_scalar (pp, HOST_WIDE_INT_PRINT_UNSIGNED,
- va_arg (*text->args_ptr, unsigned HOST_WIDE_INT));
+ va_arg (*text->m_args_ptr, unsigned HOST_WIDE_INT));
else
pp_integer_with_precision
- (pp, *text->args_ptr, precision, unsigned, "u");
+ (pp, *text->m_args_ptr, precision, unsigned, "u");
break;
case 'f':
- pp_double (pp, va_arg (*text->args_ptr, double));
+ pp_double (pp, va_arg (*text->m_args_ptr, double));
break;
case 'Z':
{
- int *v = va_arg (*text->args_ptr, int *);
- unsigned len = va_arg (*text->args_ptr, unsigned);
+ int *v = va_arg (*text->m_args_ptr, int *);
+ unsigned len = va_arg (*text->m_args_ptr, unsigned);
for (unsigned i = 0; i < len; ++i)
{
@@ -1398,10 +1398,10 @@ pp_format (pretty_printer *pp, text_info *text)
case 'x':
if (wide)
pp_scalar (pp, HOST_WIDE_INT_PRINT_HEX,
- va_arg (*text->args_ptr, unsigned HOST_WIDE_INT));
+ va_arg (*text->m_args_ptr, unsigned HOST_WIDE_INT));
else
pp_integer_with_precision
- (pp, *text->args_ptr, precision, unsigned, "x");
+ (pp, *text->m_args_ptr, precision, unsigned, "x");
break;
case '.':
@@ -1425,14 +1425,14 @@ pp_format (pretty_printer *pp, text_info *text)
gcc_assert (*p == '*');
p++;
gcc_assert (*p == 's');
- n = va_arg (*text->args_ptr, int);
+ n = va_arg (*text->m_args_ptr, int);
/* This consumes a second entry in the formatters array. */
gcc_assert (formatters[argno] == formatters[argno+1]);
argno++;
}
- s = va_arg (*text->args_ptr, const char *);
+ s = va_arg (*text->m_args_ptr, const char *);
/* Append the lesser of precision and strlen (s) characters
from the array (which need not be a nul-terminated string).
@@ -1447,7 +1447,7 @@ pp_format (pretty_printer *pp, text_info *text)
{
/* diagnostic_event_id_t *. */
diagnostic_event_id_ptr event_id
- = va_arg (*text->args_ptr, diagnostic_event_id_ptr);
+ = va_arg (*text->m_args_ptr, diagnostic_event_id_ptr);
gcc_assert (event_id->known_p ());
pp_string (pp, colorize_start (pp_show_color (pp), "path"));
@@ -1459,7 +1459,7 @@ pp_format (pretty_printer *pp, text_info *text)
break;
case '{':
- pp_begin_url (pp, va_arg (*text->args_ptr, const char *));
+ pp_begin_url (pp, va_arg (*text->m_args_ptr, const char *));
break;
default:
@@ -1763,13 +1763,10 @@ pp_remaining_character_count_for_line (pretty_printer *pp)
void
pp_printf (pretty_printer *pp, const char *msg, ...)
{
- text_info text;
va_list ap;
va_start (ap, msg);
- text.err_no = errno;
- text.args_ptr = &ap;
- text.format_spec = msg;
+ text_info text (msg, &ap, errno);
pp_format (pp, &text);
pp_output_formatted_text (pp);
va_end (ap);
@@ -1780,13 +1777,10 @@ pp_printf (pretty_printer *pp, const char *msg, ...)
void
pp_verbatim (pretty_printer *pp, const char *msg, ...)
{
- text_info text;
va_list ap;
va_start (ap, msg);
- text.err_no = errno;
- text.args_ptr = &ap;
- text.format_spec = msg;
+ text_info text (msg, &ap, errno);
pp_format_verbatim (pp, &text);
va_end (ap);
}
@@ -2290,14 +2284,9 @@ assert_pp_format_va (const location &loc, const char *expected,
bool show_color, const char *fmt, va_list *ap)
{
pretty_printer pp;
- text_info ti;
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
- ti.format_spec = fmt;
- ti.args_ptr = ap;
- ti.err_no = 0;
- ti.x_data = NULL;
- ti.m_richloc = &rich_loc;
+ text_info ti (fmt, ap, 0, nullptr, &rich_loc);
pp_show_color (&pp) = show_color;
pp_format (&pp, &ti);
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index 8ba4296..ad6d659 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -31,15 +31,29 @@ along with GCC; see the file COPYING3. If not see
along with a list of things. */
struct text_info
{
- const char *format_spec;
- va_list *args_ptr;
- int err_no; /* for %m */
- void **x_data;
- rich_location *m_richloc;
+ text_info () = default;
+ text_info (const char *format_spec,
+ va_list *args_ptr,
+ int err_no,
+ void **data = nullptr,
+ rich_location *rich_loc = nullptr)
+ : m_format_spec (format_spec),
+ m_args_ptr (args_ptr),
+ m_err_no (err_no),
+ m_data (data),
+ m_richloc (rich_loc)
+ {
+ }
void set_location (unsigned int idx, location_t loc,
enum range_display_kind range_display_kind);
location_t get_location (unsigned int index_of_location) const;
+
+ const char *m_format_spec;
+ va_list *m_args_ptr;
+ int m_err_no; /* for %m */
+ void **m_data;
+ rich_location *m_richloc;
};
/* How often diagnostics are prefixed by their locations:
diff --git a/gcc/text-art/styled-string.cc b/gcc/text-art/styled-string.cc
index a0cc187..1a66a15 100644
--- a/gcc/text-art/styled-string.cc
+++ b/gcc/text-art/styled-string.cc
@@ -563,10 +563,7 @@ styled_string::from_fmt_va (style_manager &sm,
const char *fmt,
va_list *args)
{
- text_info text;
- text.err_no = errno;
- text.args_ptr = args;
- text.format_spec = fmt;
+ text_info text (fmt, args, errno);
pretty_printer pp;
pp_show_color (&pp) = true;
pp.url_format = URL_FORMAT_DEFAULT;
diff --git a/gcc/tree-diagnostic.cc b/gcc/tree-diagnostic.cc
index d2f6637..a600f0e 100644
--- a/gcc/tree-diagnostic.cc
+++ b/gcc/tree-diagnostic.cc
@@ -261,7 +261,7 @@ default_tree_printer (pretty_printer *pp, text_info *text, const char *spec,
switch (*spec)
{
case 'E':
- t = va_arg (*text->args_ptr, tree);
+ t = va_arg (*text->m_args_ptr, tree);
if (TREE_CODE (t) == IDENTIFIER_NODE)
{
pp_identifier (pp, IDENTIFIER_POINTER (t));
@@ -270,14 +270,14 @@ default_tree_printer (pretty_printer *pp, text_info *text, const char *spec,
break;
case 'D':
- t = va_arg (*text->args_ptr, tree);
+ t = va_arg (*text->m_args_ptr, tree);
if (VAR_P (t) && DECL_HAS_DEBUG_EXPR_P (t))
t = DECL_DEBUG_EXPR (t);
break;
case 'F':
case 'T':
- t = va_arg (*text->args_ptr, tree);
+ t = va_arg (*text->m_args_ptr, tree);
break;
default:
diff --git a/gcc/tree-pretty-print.h b/gcc/tree-pretty-print.h
index 2c8ee9a..12bae05 100644
--- a/gcc/tree-pretty-print.h
+++ b/gcc/tree-pretty-print.h
@@ -28,7 +28,7 @@ along with GCC; see the file COPYING3. If not see
pp_verbatim (PP, "%qs not supported by %s", \
get_tree_code_name (TREE_CODE (T)), __FUNCTION__)
-#define pp_ti_abstract_origin(TI) ((tree *) (TI)->x_data)
+#define pp_ti_abstract_origin(TI) ((tree *) (TI)->m_data)
extern void debug_generic_expr (tree);