diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-07-15 09:22:17 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-07-15 09:22:17 +0000 |
commit | 6ae9b8759e83dcfba6176c397aa703acb48d1f8b (patch) | |
tree | 6ddde92beee957f2fbbd0e64361555311ba2f620 | |
parent | 72aeff7c56480cd257a3654eaf93ff1e49bc1c25 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/attrib24.C | 4 |
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" } |