aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-decl.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/old-style-param-1.c4
4 files changed, 18 insertions, 2 deletions
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 <v.reichelt@netcologne.de>
+
+ PR c/35750
+ * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
+
2008-03-31 Andrew Pinski <andrew_pinski@playstation.sony.com>
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 <v.reichelt@netcologne.de>
+
+ PR c/35750
+ * gcc.dg/old-style-param-1.c: New test.
+
2008-03-31 Eric Botcazou <ebotcazou@adacore.com>
* 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" } */