re PR c/27420 (ICE on invalid function definition)
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>
Mon, 22 May 2006 12:23:44 +0000 (12:23 +0000)
committerVolker Reichelt <reichelt@gcc.gnu.org>
Mon, 22 May 2006 12:23:44 +0000 (12:23 +0000)
PR c/27420
* c-common.c (self_promoting_args_p): Skip erroneous args.

* gcc.dg/func-args-2.c: New test.

From-SVN: r113976

gcc/ChangeLog
gcc/c-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/func-args-2.c [new file with mode: 0644]

index 5fb269ec70f6ad9dea4f07717a1b7f4289f680f6..222772d854ae8a55e5904a1efde8087ab0f5c59c 100644 (file)
@@ -1,5 +1,8 @@
 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
+       PR c/27420
+       * c-common.c (self_promoting_args_p): Skip erroneous args.
+
        PR c/26818
        * c-decl.c (finish_struct): Skip erroneous fields.
 
index ea8985f3dde45c6dc82030274d5376baadb4d0ca..a27f5d36a24e54c2a8dadd3e5ff1407dc4c454c8 100644 (file)
@@ -3547,6 +3547,9 @@ self_promoting_args_p (tree parms)
     {
       tree type = TREE_VALUE (t);
 
+      if (type == error_mark_node)
+       continue;
+
       if (TREE_CHAIN (t) == 0 && type != void_type_node)
        return 0;
 
index a1c67031302a1d32e4e2edeceda030c54fc4e3ea..4d24c93e0c3674df8a1126579be1e54c43a75de6 100644 (file)
@@ -1,5 +1,8 @@
 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
+       PR c/27420
+       * gcc.dg/func-args-2.c: New test.
+
        PR c/26818
        * gcc.dg/struct-incompl-1.c: New test.
 
diff --git a/gcc/testsuite/gcc.dg/func-args-2.c b/gcc/testsuite/gcc.dg/func-args-2.c
new file mode 100644 (file)
index 0000000..a537f89
--- /dev/null
@@ -0,0 +1,6 @@
+/* PR c/27420 */
+/* { dg-do compile } */
+/* { dg-options "-w" } */
+
+void foo();
+void foo(struct A a) {}  /* { dg-error "incomplete type" } */