From: Volker Reichelt Date: Mon, 22 May 2006 12:23:44 +0000 (+0000) Subject: re PR c/27420 (ICE on invalid function definition) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=694fea202c39e93f438c9f700e1dae4aa99028de;p=gcc.git re PR c/27420 (ICE on invalid function definition) PR c/27420 * c-common.c (self_promoting_args_p): Skip erroneous args. * gcc.dg/func-args-2.c: New test. From-SVN: r113976 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5fb269ec70f..222772d854a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2006-05-22 Volker Reichelt + PR c/27420 + * c-common.c (self_promoting_args_p): Skip erroneous args. + PR c/26818 * c-decl.c (finish_struct): Skip erroneous fields. diff --git a/gcc/c-common.c b/gcc/c-common.c index ea8985f3dde..a27f5d36a24 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a1c67031302..4d24c93e0c3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2006-05-22 Volker Reichelt + 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 index 00000000000..a537f8956a6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/func-args-2.c @@ -0,0 +1,6 @@ +/* PR c/27420 */ +/* { dg-do compile } */ +/* { dg-options "-w" } */ + +void foo(); +void foo(struct A a) {} /* { dg-error "incomplete type" } */