re PR c++/53289 (unnecessary repetition of caret diagnostics)

2012-05-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c++/53289
gcc/
	* diagnostic.h (diagnostic_context): Add last_location.
	* diagnostic.c (diagnostic_initialize): Initialize it.
	(diagnostic_show_locus): Use it.

From-SVN: r187355
This commit is contained in:
Manuel López-Ibáñez 2012-05-09 21:14:15 +00:00
parent d21a7b447a
commit 1b8b126f38
3 changed files with 14 additions and 1 deletions

View File

@ -10,6 +10,13 @@
(xop_mulv2div2di3_low): Remove insn_and_split pattern.
(xop_mulv2div2di3_high): Ditto.
2012-05-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/53289
* diagnostic.h (diagnostic_context): Add last_location.
* diagnostic.c (diagnostic_initialize): Initialize it.
(diagnostic_show_locus): Use it.
2012-05-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
* doc/extend.texi (Function Attributes): Point xref to section

View File

@ -147,6 +147,7 @@ diagnostic_initialize (diagnostic_context *context, int n_opts)
context->option_enabled = NULL;
context->option_state = NULL;
context->option_name = NULL;
context->last_location = UNKNOWN_LOCATION;
context->last_module = 0;
context->x_data = NULL;
context->lock = 0;
@ -263,9 +264,11 @@ diagnostic_show_locus (diagnostic_context * context,
if (!context->show_caret
|| diagnostic->location <= BUILTINS_LOCATION)
|| diagnostic->location <= BUILTINS_LOCATION
|| diagnostic->location == context->last_location)
return;
context->last_location = diagnostic->location;
s = expand_location_to_spelling_point (diagnostic->location);
line = location_get_source_line (s);
if (line == NULL)

View File

@ -172,6 +172,9 @@ struct diagnostic_context
/* Auxiliary data for client. */
void *x_data;
/* Used to detect that the last caret was printed at the same location. */
location_t last_location;
/* Used to detect when the input file stack has changed since last
described. */
const struct line_map *last_module;