From 6ae9b8759e83dcfba6176c397aa703acb48d1f8b Mon Sep 17 00:00:00 2001 From: Volker Reichelt Date: Sat, 15 Jul 2006 09:22:17 +0000 Subject: [PATCH] re PR c++/28387 (ICE with attribute on invalid declaration) PR c++/28387 * decl2.c (cplus_decl_attributes): Check for invalid decls. * g++.dg/ext/attrib24.C: New test. From-SVN: r115465 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl2.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ext/attrib24.C | 4 ++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/ext/attrib24.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d8b8652f913..4b35a3d37d4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-07-15 Volker Reichelt + + PR c++/28387 + * decl2.c (cplus_decl_attributes): Check for invalid decls. + 2006-07-14 Volker Reichelt PR c++/28343 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 11c4901cb3a..3b4e7ce02fb 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -997,7 +997,8 @@ grokbitfield (const cp_declarator *declarator, void cplus_decl_attributes (tree *decl, tree attributes, int flags) { - if (*decl == NULL_TREE || *decl == void_type_node) + if (*decl == NULL_TREE || *decl == void_type_node + || *decl == error_mark_node) return; if (TREE_CODE (*decl) == TEMPLATE_DECL) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fa86c8121ca..d9edf48b3be 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-07-15 Volker Reichelt + + PR c++/28387 + * g++.dg/ext/attrib24.C: New test. + 2006-07-14 Volker Reichelt PR c++/28343 diff --git a/gcc/testsuite/g++.dg/ext/attrib24.C b/gcc/testsuite/g++.dg/ext/attrib24.C new file mode 100644 index 00000000000..208809a3f3e --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib24.C @@ -0,0 +1,4 @@ +// PR c++/28387 +// { dg-do compile } + +enum __attribute__((unused)) E; // { dg-error "without previous declaration" } -- 2.30.2