aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-08-01 12:09:33 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-08-01 12:09:33 +0000
commit5ebbb72c205cff26072a2f381a3fe92e26ab8257 (patch)
tree6069af51b8c67f8d701c0039ecd38edd61d41cd0
parente4837aa9fbb91803585f038de67b0d62d256b654 (diff)
downloadgcc-5ebbb72c205cff26072a2f381a3fe92e26ab8257.zip
gcc-5ebbb72c205cff26072a2f381a3fe92e26ab8257.tar.gz
gcc-5ebbb72c205cff26072a2f381a3fe92e26ab8257.tar.bz2
re PR c++/86661 (g++ ICE:tree check: expected tree that contains ‘decl minimal’ structure, have ‘overload’ in note_name_declared_in_class, at cp/class.c:8288)
/cp 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). /testsuite 2018-08-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/86661 * g++.dg/lookup/name-clash12.C: New. From-SVN: r263207
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/class.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/lookup/name-clash12.C9
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" }
+};
+}