From: Volker Reichelt Date: Thu, 17 Apr 2008 19:41:50 +0000 (+0000) Subject: re PR c/35744 (ICE attributes for invalid types) X-Git-Tag: prereleases/gcc-4.2.4-rc1~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8141262005625b4864933bafb48051c4af83bfb5;p=thirdparty%2Fgcc.git re PR c/35744 (ICE attributes for invalid types) PR c/35744 * attribs.c (decl_attributes): Return early on errorneous node. * gcc.dg/attr-error-1.c: New test. From-SVN: r134409 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 58cb5dd006c0..0815f0aeb1c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2008-04-17 Volker Reichelt + PR c/35744 + * attribs.c (decl_attributes): Return early on errorneous node. + PR c/35436 * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type. diff --git a/gcc/attribs.c b/gcc/attribs.c index cbc605632810..629f31712749 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -138,6 +138,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 fa8b6ed67839..372b94b51f6e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2008-04-17 Volker Reichelt + PR c/35744 + * gcc.dg/attr-error-1.c: New test. + PR c/35436 * gcc.dg/format/gcc_gfc-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 000000000000..c136484a151a --- /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" } */ +};