aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2005-10-04 13:58:42 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2005-10-04 13:58:42 +0000
commit9df594d7e7119cbbb3618298054ab15d4d3db258 (patch)
treed21cf970781e413baf152e71ea6897bc4c8b7006
parent11e3f4b6f733c96148bea5747f793f020f4aeadb (diff)
downloadgcc-9df594d7e7119cbbb3618298054ab15d4d3db258.zip
gcc-9df594d7e7119cbbb3618298054ab15d4d3db258.tar.gz
gcc-9df594d7e7119cbbb3618298054ab15d4d3db258.tar.bz2
re PR c/23576 (tree check: expected class ‘type’, have exceptional’ (error_mark) in grokdeclarator, at c-decl.c:4252)
2005-10-04 Richard Guenther <rguenther@suse.de> PR c/23576 * c-decl.c (grokdeclarator): Don't write to fields of error_mark_node. * gcc.dg/noncompile/pr23576.c: New testcase. From-SVN: r104943
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-decl.c21
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/pr23576.c1
4 files changed, 24 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a0c8dcc..9c00674 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-04 Richard Guenther <rguenther@suse.de>
+
+ PR c/23576
+ * c-decl.c (grokdeclarator): Don't write to fields
+ of error_mark_node.
+
2005-10-04 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/23125
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 1caf0b9..c274df4 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -4248,16 +4248,19 @@ grokdeclarator (const struct c_declarator *declarator,
else
type = build_array_type (type, itype);
- if (size_varies)
- C_TYPE_VARIABLE_SIZE (type) = 1;
-
- /* The GCC extension for zero-length arrays differs from
- ISO flexible array members in that sizeof yields
- zero. */
- if (size && integer_zerop (size))
+ if (type != error_mark_node)
{
- TYPE_SIZE (type) = bitsize_zero_node;
- TYPE_SIZE_UNIT (type) = size_zero_node;
+ if (size_varies)
+ C_TYPE_VARIABLE_SIZE (type) = 1;
+
+ /* The GCC extension for zero-length arrays differs from
+ ISO flexible array members in that sizeof yields
+ zero. */
+ if (size && integer_zerop (size))
+ {
+ TYPE_SIZE (type) = bitsize_zero_node;
+ TYPE_SIZE_UNIT (type) = size_zero_node;
+ }
}
if (decl_context != PARM
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1eb0c21..8bc316d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-04 Richard Guenther <rguenther@suse.de>
+
+ PR c/23576
+ * gcc.dg/noncompile/pr23576.c: New testcase.
+
2005-10-04 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/23125
diff --git a/gcc/testsuite/gcc.dg/noncompile/pr23576.c b/gcc/testsuite/gcc.dg/noncompile/pr23576.c
new file mode 100644
index 0000000..384b0f6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/noncompile/pr23576.c
@@ -0,0 +1 @@
+struct ipr_path_entry path[0]; /* { dg-error "array type has incomplete element type" } */