From: Lee Millward Date: Sat, 2 Dec 2006 16:34:26 +0000 (+0000) Subject: re PR c/27953 (ICE with invalid function definitions) X-Git-Tag: releases/gcc-4.3.0~8174 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f1f66b423f6033acb84815a34b66b231d6cf9816;p=thirdparty%2Fgcc.git re PR c/27953 (ICE with invalid function definitions) PR c/27953 * c-decl.c (store_parm_decls_oldstyle): Robustify * gcc.dg/pr27953.c: New test. From-SVN: r119446 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eef0bb0ff0ac..e1ae8cb62f47 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-12-02 Lee Millward + + PR c/27953 + * c-decl.c (store_parm_decls_oldstyle): Robustify. + 2006-11-30 Jan Hubicka Uros Bizjak diff --git a/gcc/c-decl.c b/gcc/c-decl.c index fa1c3406d953..bd737d16e7ce 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -6482,8 +6482,8 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) tree type; for (parm = DECL_ARGUMENTS (fndecl), type = current_function_prototype_arg_types; - parm || (type && (TYPE_MAIN_VARIANT (TREE_VALUE (type)) - != void_type_node)); + parm || (type && TREE_VALUE (type) != error_mark_node + && (TYPE_MAIN_VARIANT (TREE_VALUE (type)) != void_type_node)); parm = TREE_CHAIN (parm), type = TREE_CHAIN (type)) { if (parm == 0 || type == 0 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index df43234265c3..6159e46895e1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-12-02 Lee Millward + + PR c/27953 + * gcc.dg/pr27953.c: New test. + 2006-12-01 Volker Reichelt PR c++/30022 diff --git a/gcc/testsuite/gcc.dg/pr27953.C b/gcc/testsuite/gcc.dg/pr27953.C new file mode 100644 index 000000000000..1424e5468c0b --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr27953.C @@ -0,0 +1,4 @@ +/* PR c/27953 */ + +void foo(struct A a) {} /* { dg-error "parameter list|definition|incomplete type" } */ +void foo() {} /* { dg-error "redefinition" } \ No newline at end of file