From b02a5e265db4d32cf1e67ee142bf337c185873ea Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Tue, 26 Apr 2016 15:01:09 +0000 Subject: [PATCH] re PR c/70791 (-Wnested-externs prints inconsistent column number) PR c/70791 * c-decl.c (pushdecl): Pass LOCUS down to warning. * gcc.dg/Wnested-externs-2.c: New test. From-SVN: r235447 --- gcc/c/ChangeLog | 3 +++ gcc/c/c-decl.c | 3 ++- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.dg/Wnested-externs-2.c | 11 +++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/Wnested-externs-2.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 139d770f82a9..b59d69092c94 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -8,6 +8,9 @@ (c_parser_switch_statement): Use it. (c_parser_while_statement): Use it. + PR c/70791 + * c-decl.c (pushdecl): Pass LOCUS down to warning. + 2016-04-20 Ilya Verbin PR c++/69363 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index f0c677b1cef1..16e4250194a8 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -2949,7 +2949,8 @@ pushdecl (tree x) } if (scope != file_scope && !DECL_IN_SYSTEM_HEADER (x)) - warning (OPT_Wnested_externs, "nested extern declaration of %qD", x); + warning_at (locus, OPT_Wnested_externs, + "nested extern declaration of %qD", x); while (b && !B_IN_EXTERNAL_SCOPE (b)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c4be021d6f38..70baf0605617 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -5,6 +5,9 @@ * gcc.dg/pr67784-4.c: New test. * gcc.dg/pr67784-5.c: New test. + PR c/70791 + * gcc.dg/Wnested-externs-2.c: New test. + 2016-04-26 Marc Glisse * gcc.dg/fold-plusmult.c: Adjust. diff --git a/gcc/testsuite/gcc.dg/Wnested-externs-2.c b/gcc/testsuite/gcc.dg/Wnested-externs-2.c new file mode 100644 index 000000000000..77bed5faf370 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wnested-externs-2.c @@ -0,0 +1,11 @@ +/* PR c/70791 */ +/* { dg-do compile } */ +/* { dg-options "-Wnested-externs" } */ + +void +bar (void) +{ + extern int i; /* { dg-warning "14:nested extern declaration of 'i'" } */ + extern short foo (void); /* { dg-warning "16:nested extern declaration of 'foo'" } */ + extern struct S *s; /* { dg-warning "20:nested extern declaration of 's'" } */ +} -- 2.43.5