From ed55ed375e9e52f0bf7d48c51290cf6bdb09d728 Mon Sep 17 00:00:00 2001 From: paolo Date: Mon, 11 Feb 2008 09:28:48 +0000 Subject: [PATCH] cp/ 2008-02-11 Paolo Carlini PR c++/35077 * decl.c (groktypename): Check grokdeclarator return. testsuite/ 2008-02-11 Paolo Carlini PR c++/35077 * g++.dg/template/crash78.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132237 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/crash78.C | 3 +++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/crash78.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9dc4362..fe12e56 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2008-02-11 Paolo Carlini + + PR c++/35077 + * decl.c (groktypename): Check grokdeclarator return. + 2008-02-10 Jason Merrill PR c++/34094 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 6b80712..7294930 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -3914,7 +3914,7 @@ groktypename (cp_decl_specifier_seq *type_specifiers, attrs = type_specifiers->attributes; type_specifiers->attributes = NULL_TREE; type = grokdeclarator (declarator, type_specifiers, TYPENAME, 0, &attrs); - if (attrs) + if (attrs && type != error_mark_node) { if (CLASS_TYPE_P (type)) warning (OPT_Wattributes, "ignoring attributes applied to class type %qT " diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index aa851c1..4ac1835 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-02-11 Paolo Carlini + + PR c++/35077 + * g++.dg/template/crash78.C: New. + 2008-02-11 Uros Bizjak PR testsuite/35047 diff --git a/gcc/testsuite/g++.dg/template/crash78.C b/gcc/testsuite/g++.dg/template/crash78.C new file mode 100644 index 0000000..10c36ef --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash78.C @@ -0,0 +1,3 @@ +// PR c++/35077 + +template