From e911c0fee3781613eb99cbed3c6d2d5d9638360c Mon Sep 17 00:00:00 2001 From: reichelt Date: Mon, 31 Mar 2008 19:37:45 +0000 Subject: [PATCH] PR c/35750 * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters. * gcc.dg/old-style-param-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133771 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/c-decl.c | 6 ++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/old-style-param-1.c | 4 ++++ 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/old-style-param-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c3e9ffd..45eff3e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-03-31 Volker Reichelt + + PR c/35750 + * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters. + 2008-03-31 Andrew Pinski PR middle-end/30186 diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 04b36d5..d86bca0 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -6483,8 +6483,10 @@ store_parm_decls_oldstyle (tree fndecl, const struct c_arg_info *arg_info) /* Type for passing arg must be consistent with that declared for the arg. ISO C says we take the unqualified type for parameters declared with qualified type. */ - if (!comptypes (TYPE_MAIN_VARIANT (DECL_ARG_TYPE (parm)), - TYPE_MAIN_VARIANT (TREE_VALUE (type)))) + if (TREE_TYPE (parm) != error_mark_node + && TREE_TYPE (type) != error_mark_node + && !comptypes (TYPE_MAIN_VARIANT (DECL_ARG_TYPE (parm)), + TYPE_MAIN_VARIANT (TREE_VALUE (type)))) { if (TYPE_MAIN_VARIANT (TREE_TYPE (parm)) == TYPE_MAIN_VARIANT (TREE_VALUE (type))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ba35c2b..eddd5c9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-03-31 Volker Reichelt + + PR c/35750 + * gcc.dg/old-style-param-1.c: New test. + 2008-03-31 Eric Botcazou * gnat.dg/object_overflow.adb: New test. diff --git a/gcc/testsuite/gcc.dg/old-style-param-1.c b/gcc/testsuite/gcc.dg/old-style-param-1.c new file mode 100644 index 0000000..1742069 --- /dev/null +++ b/gcc/testsuite/gcc.dg/old-style-param-1.c @@ -0,0 +1,4 @@ +/* PR c/35750 */ + +void foo(int[]); +void foo(x) int x[](); {} /* { dg-error "array of functions" } */ -- 2.7.4