+2002-01-31 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * c-decl.c (grokdeclarator): Handle type being a typedef for an
+ invalid type.
+
2002-01-30 David O'Brien <obrien@FreeBSD.org>
* config.gcc: Include sparc/biarch64.h rather than sparc/sparc_bi.h.
/* Actual typedefs come to us as TYPE_DECL nodes. */
else if (TREE_CODE (id) == TYPE_DECL)
{
- type = TREE_TYPE (id);
- decl_attr = DECL_ATTRIBUTES (id);
- typedef_decl = id;
+ if (TREE_TYPE (id) == error_mark_node)
+ ; /* Allow the type to default to int to avoid cascading errors. */
+ else
+ {
+ type = TREE_TYPE (id);
+ decl_attr = DECL_ATTRIBUTES (id);
+ typedef_decl = id;
+ }
}
/* Built-in types come as identifiers. */
else if (TREE_CODE (id) == IDENTIFIER_NODE)
+2002-01-31 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * gcc.dg/noncompile/20020130-1.c: New test.
+
2002-01-30 David Billinghurst <David.Billinghurst@riotinto.com>
* g77.dg/f77-edit-i-out.f: Escape \. Allow \r\n and \r.
--- /dev/null
+/* Test for ICE when using typedef for bad type. */
+/* Origin: Joseph Myers <jsm28@cam.ac.uk>. */
+
+void
+foo (void)
+{
+ typedef int t[x]; /* { dg-error "undeclared|function" "x undeclared" } */
+ t bar;
+}