diff options
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/class.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/name-clash12.C | 9 |
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 503d8b4..d66c195 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-08-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/86661 + * class.c (note_name_declared_in_class): Use location_of in permerror + instead of DECL_SOURCE_LOCATION (for OVERLOADs). + 2018-07-31 Tom de Vries <tdevries@suse.de> PR debug/86687 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index c03a82b..de59831 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -8285,7 +8285,7 @@ note_name_declared_in_class (tree name, tree decl) A name N used in a class S shall refer to the same declaration in its context and when re-evaluated in the completed scope of S. */ - if (permerror (DECL_SOURCE_LOCATION (decl), + if (permerror (location_of (decl), "declaration of %q#D changes meaning of %qD", decl, OVL_NAME (decl))) inform (location_of ((tree) n->value), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7fcc05d..7bf890a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-08-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/86661 + * g++.dg/lookup/name-clash12.C: New. + 2018-08-01 Richard Biener <rguenther@suse.de> * gcc.dg/tree-ssa/ssa-fre-68.c: New testcase. diff --git a/gcc/testsuite/g++.dg/lookup/name-clash12.C b/gcc/testsuite/g++.dg/lookup/name-clash12.C new file mode 100644 index 0000000..07ed8c3 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/name-clash12.C @@ -0,0 +1,9 @@ +// PR c++/86661 + +typedef int a; // { dg-message "declared here" } +namespace { +class b { + a c; + template <typename> void a(); // { dg-error "changes meaning" } +}; +} |