diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/attribs.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/attr-error-1.c | 12 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52f8d10..bc19665 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-04-11 Volker Reichelt <v.reichelt@netcologne.de> + + PR c/35744 + * attribs.c (decl_attributes): Return early on errorneous node. + 2008-04-10 Oleg Ryjkov <olegr@google.com> * tree.h (struct tree_base): Added a new flag default_def_flag. diff --git a/gcc/attribs.c b/gcc/attribs.c index 767035b..65233de 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -225,6 +225,9 @@ decl_attributes (tree *node, tree attributes, int flags) tree a; tree returned_attrs = NULL_TREE; + if (TREE_TYPE (*node) == error_mark_node) + return NULL_TREE; + if (!attributes_initialized) init_attributes (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b22bcd4..5f238b6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-04-11 Volker Reichelt <v.reichelt@netcologne.de> + + PR c/35744 + * gcc.dg/attr-error-1.c: New test. + 2008-04-10 Adam Nemet <anemet@caviumnetworks.com> * gcc.target/mips/scc-2.c: New test. diff --git a/gcc/testsuite/gcc.dg/attr-error-1.c b/gcc/testsuite/gcc.dg/attr-error-1.c new file mode 100644 index 0000000..c136484 --- /dev/null +++ b/gcc/testsuite/gcc.dg/attr-error-1.c @@ -0,0 +1,12 @@ +/* PR c/35744 */ + +typedef char a[N] __attribute__((aligned(4))); /* { dg-error "undeclared" } */ + +void c[1] __attribute__((vector_size(8))); /* { dg-error "array of voids" } */ + +void b[1] __attribute__((may_alias)); /* { dg-error "array of voids" } */ + +struct A +{ + void d[1] __attribute__((packed)); /* { dg-error "array of voids" } */ +}; |