aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-07-15 09:22:17 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-07-15 09:22:17 +0000
commit6ae9b8759e83dcfba6176c397aa703acb48d1f8b (patch)
tree6ddde92beee957f2fbbd0e64361555311ba2f620
parent72aeff7c56480cd257a3654eaf93ff1e49bc1c25 (diff)
downloadgcc-6ae9b8759e83dcfba6176c397aa703acb48d1f8b.zip
gcc-6ae9b8759e83dcfba6176c397aa703acb48d1f8b.tar.gz
gcc-6ae9b8759e83dcfba6176c397aa703acb48d1f8b.tar.bz2
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
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib24.C4
4 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d8b8652..4b35a3d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28387
+ * decl2.c (cplus_decl_attributes): Check for invalid decls.
+
2006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/28343
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 11c4901..3b4e7ce 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 fa86c81..d9edf48 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28387
+ * g++.dg/ext/attrib24.C: New test.
+
2006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
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 0000000..208809a
--- /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" }