aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-11-19 09:33:18 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-11-19 09:33:18 +0000
commit4ef3890074446d4ad7dcf60a538ca0c56e887804 (patch)
treec922f6da0a59d3e1f34b6ad7753ce8a778dc4c8f /gcc
parent390e529e2b98983de392b3d9b9b57c4a1258b080 (diff)
downloadgcc-4ef3890074446d4ad7dcf60a538ca0c56e887804.zip
gcc-4ef3890074446d4ad7dcf60a538ca0c56e887804.tar.gz
gcc-4ef3890074446d4ad7dcf60a538ca0c56e887804.tar.bz2
decl2.c (grokfield): Remove obsolete _vptr check; fix explicit template argument list error location.
/cp 2018-11-18 Paolo Carlini <paolo.carlini@oracle.com> * decl2.c (grokfield): Remove obsolete _vptr check; fix explicit template argument list error location. /testsuite 2018-11-18 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/template/crash91.C: Check location too. From-SVN: r266264
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c20
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/template/crash91.C2
4 files changed, 15 insertions, 16 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6d99d6a..6f60f0d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl2.c (grokfield): Remove obsolete _vptr check; fix
+ explicit template argument list error location.
+
2018-11-16 Kamlesh Kumar <kamleshbhalui@gmail.com>
DR 1207
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 0453741..7686a90 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -804,7 +804,6 @@ grokfield (const cp_declarator *declarator,
tree value;
const char *asmspec = 0;
int flags;
- tree name;
if (init
&& TREE_CODE (init) == TREE_LIST
@@ -829,21 +828,12 @@ grokfield (const cp_declarator *declarator,
if (value == void_type_node)
return value;
-
- name = DECL_NAME (value);
-
- if (name != NULL_TREE)
+ if (DECL_NAME (value)
+ && TREE_CODE (DECL_NAME (value)) == TEMPLATE_ID_EXPR)
{
- if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
- {
- error ("explicit template argument list not allowed");
- return error_mark_node;
- }
-
- if (IDENTIFIER_POINTER (name)[0] == '_'
- && id_equal (name, "_vptr"))
- error ("member %qD conflicts with virtual function table field name",
- value);
+ error_at (declarator->id_loc,
+ "explicit template argument list not allowed");
+ return error_mark_node;
}
/* Stash away type declarations. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4db7144..e1f0ac6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2018-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/template/crash91.C: Check location too.
+
2018-11-19 Martin Liska <mliska@suse.cz>
PR gcov-profile/88045
diff --git a/gcc/testsuite/g++.dg/template/crash91.C b/gcc/testsuite/g++.dg/template/crash91.C
index 39575cd..6fda320 100644
--- a/gcc/testsuite/g++.dg/template/crash91.C
+++ b/gcc/testsuite/g++.dg/template/crash91.C
@@ -4,5 +4,5 @@ template<int> void foo();
struct A
{
- typedef void foo<0>(); // { dg-error "explicit template argument list not allowed" }
+ typedef void foo<0>(); // { dg-error "16:explicit template argument list not allowed" }
};