From: paolo Date: Fri, 11 Jan 2019 09:02:43 +0000 (+0000) Subject: /cp X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b385e5169e13f34115849c9cfed891bc8c59c973;p=thirdparty%2Fgcc.git /cp 2019-01-11 Paolo Carlini * decl.c (start_decl): Improve error location. (grokdeclarator): Likewise, improve two locations. /testsuite 2019-01-11 Paolo Carlini * g++.dg/diagnostic/extern-initialized.C: New. * g++.dg/ext/dllimport-initialized.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267830 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b3ee2a5db2fb..4b9fa821d74e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2019-01-11 Paolo Carlini + + * decl.c (start_decl): Improve error location. + (grokdeclarator): Likewise, improve two locations. + 2019-01-09 Sandra Loosemore PR other/16615 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 267303e0b706..fe5403d5ab5b 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -5096,7 +5096,8 @@ start_decl (const cp_declarator *declarator, a definition. */ if (initialized && DECL_DLLIMPORT_P (decl)) { - error ("definition of %q#D is marked %", decl); + error_at (DECL_SOURCE_LOCATION (decl), + "definition of %q#D is marked %", decl); DECL_DLLIMPORT_P (decl) = 0; } @@ -12791,11 +12792,13 @@ grokdeclarator (const cp_declarator *declarator, /* It's common practice (and completely valid) to have a const be initialized and declared extern. */ if (!(type_quals & TYPE_QUAL_CONST)) - warning (0, "%qs initialized and declared %", name); + warning_at (DECL_SOURCE_LOCATION (decl), 0, + "%qs initialized and declared %", name); } else { - error ("%qs has both % and initializer", name); + error_at (DECL_SOURCE_LOCATION (decl), + "%qs has both % and initializer", name); return error_mark_node; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 80e0b1ab7429..11eddf7409ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-11 Paolo Carlini + + * g++.dg/diagnostic/extern-initialized.C: New. + * g++.dg/ext/dllimport-initialized.C: Likewise. + 2019-01-11 Thomas Koenig PR fortran/59345 diff --git a/gcc/testsuite/g++.dg/diagnostic/extern-initialized.C b/gcc/testsuite/g++.dg/diagnostic/extern-initialized.C new file mode 100644 index 000000000000..4138a3772967 --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/extern-initialized.C @@ -0,0 +1,6 @@ +extern int i __attribute__((unused)) = 0; // { dg-warning "12:.i. initialized and declared .extern." } + +void foo() +{ + extern int i __attribute__((unused)) = 0; // { dg-error "14:.i. has both .extern. and initializer" } +} diff --git a/gcc/testsuite/g++.dg/ext/dllimport-initialized.C b/gcc/testsuite/g++.dg/ext/dllimport-initialized.C new file mode 100644 index 000000000000..adc7e82dc1a8 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/dllimport-initialized.C @@ -0,0 +1,3 @@ +// { dg-do compile { target i?86-*-cygwin* i?86-*-mingw* x86_64-*-mingw* } } + +__attribute__((dllimport)) int i __attribute__((unused)) = 0; // { dg-error "32:definition of .int i. is marked .dllimport." }