]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/35437 (ICE with struct containing incomplete type)
authorSimon Martin <simartin@users.sourceforge.net>
Tue, 7 Oct 2008 20:56:53 +0000 (20:56 +0000)
committerSimon Martin <simartin@gcc.gnu.org>
Tue, 7 Oct 2008 20:56:53 +0000 (20:56 +0000)
gcc/

2008-10-07  Simon Martin  <simartin@users.sourceforge.net>

        PR c/35437
        * expr.c (count_type_elements): Handle ERROR_MARK.

gcc/testsuite/

2008-01-07  Simon Martin  <simartin@users.sourceforge.net>

        PR c/35437
        * gcc.dg/struct-parse-2.c: New test.
        * g++.dg/parse/struct-4.C: New test.

From-SVN: r140953

gcc/ChangeLog
gcc/expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/struct-4.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/struct-parse-2.c [new file with mode: 0644]

index 0c0208699b5577d79e7e1a05c0d635306738f2db..adbd5a18491b47fc762d45cd3fdd83a3bf7208ac 100644 (file)
@@ -1,3 +1,8 @@
+2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c/35437
+       * expr.c (count_type_elements): Handle ERROR_MARK.
+
 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/29609
index 32c8d01fe7f40d5bf82179a1f66d29964e03c017..277a6e1a33a99c6556a569bf36b4f2c83b81dd81 100644 (file)
@@ -5021,6 +5021,9 @@ count_type_elements (const_tree type, bool allow_flexarr)
     case REFERENCE_TYPE:
       return 1;
 
+    case ERROR_MARK:
+      return 0;
+
     case VOID_TYPE:
     case METHOD_TYPE:
     case FUNCTION_TYPE:
index 3ba82219cf299e5139b2b1e89b2abd7a406049e3..cc7ec163e0714e4726b1258e76317d47cae7029b 100644 (file)
@@ -1,3 +1,9 @@
+2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c/35437
+       * gcc.dg/struct-parse-2.c: New test.
+       * g++.dg/parse/struct-4.C: New test.
+
 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/29609
diff --git a/gcc/testsuite/g++.dg/parse/struct-4.C b/gcc/testsuite/g++.dg/parse/struct-4.C
new file mode 100644 (file)
index 0000000..559411a
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR c/35437 */
+/* { dg-do "compile" } */
+
+struct A
+{
+  int i;
+  struct A a; /* { dg-error "has incomplete type" } */
+};
+
+void foo()
+{
+  struct A b = { 0 };
+}
diff --git a/gcc/testsuite/gcc.dg/struct-parse-2.c b/gcc/testsuite/gcc.dg/struct-parse-2.c
new file mode 100644 (file)
index 0000000..559411a
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR c/35437 */
+/* { dg-do "compile" } */
+
+struct A
+{
+  int i;
+  struct A a; /* { dg-error "has incomplete type" } */
+};
+
+void foo()
+{
+  struct A b = { 0 };
+}