This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r251239 - in /trunk/gcc: c/ChangeLog c/c-parser...
- From: dmalcolm at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Mon, 21 Aug 2017 17:03:16 -0000
- Subject: r251239 - in /trunk/gcc: c/ChangeLog c/c-parser...
Author: dmalcolm
Date: Mon Aug 21 17:03:15 2017
New Revision: 251239
URL: https://gcc.gnu.org/viewcvs?rev=251239&root=gcc&view=rev
Log:
C: use full locations within c_parser_expr_list's vec<location_t>
The previous patch uncovered a bug in how c_parser_expr_list builds the
vec<location_t>: it was only using the location of the first token
within each assignment-expression in the expr-list.
This shows up in e.g. this -Wformat warning, where only part of the
2nd param is underlined:
printf("hello %i", (long)0);
~^ ~
%li
This patch fixes c_parser_expr_list to use the full range of
each assignment-expression in the list for the vec<location_t>, so
that for the above we print:
printf("hello %i", (long)0);
~^ ~~~~~~~
%li
gcc/c/ChangeLog:
* c-parser.c (c_parser_expr_list): Use c_expr::get_location ()
rather than peeking the location of the first token.
* c-tree.h (c_expr::get_location): New method.
gcc/testsuite/ChangeLog:
* gcc.dg/format/diagnostic-ranges.c (test_mismatching_types):
Update expected result to show all of "(long)0" being underlined.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_multitoken_macro): Update expected underlining.
Modified:
trunk/gcc/c/ChangeLog
trunk/gcc/c/c-parser.c
trunk/gcc/c/c-tree.h
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
trunk/gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c