summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-10-27 15:50:50 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-10-27 15:50:50 +0000
commitcb60919f59f4d1d194985ae80af659700d687de9 (patch)
tree522ccf534520423c5fa756e2c5fe5d52a6ed93a5
parent2cbde60436e84440a6def503f0e8ba9eedf36e7d (diff)
downloadppe42-gcc-cb60919f59f4d1d194985ae80af659700d687de9.tar.gz
ppe42-gcc-cb60919f59f4d1d194985ae80af659700d687de9.zip
PR c/41842
* c-typeck.c (convert_arguments): Return -1 if any of the arguments is error_mark_node. * gcc.dg/pr41842.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153599 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-typeck.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr41842.c8
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2aca2822577..d8518c07dda 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/41842
+ * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
+ error_mark_node.
+
2009-10-27 Richard Guenther <rguenther@suse.de>
* tree-complex.c (expand_complex_div_wide): Check for
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index c7d2bc8da22..9b1f09c4593 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -2739,6 +2739,7 @@ convert_arguments (tree typelist, VEC(tree,gc) *values,
{
tree typetail, val;
unsigned int parmnum;
+ bool error_args = false;
const bool type_generic = fundecl
&& lookup_attribute ("type generic", TYPE_ATTRIBUTES(TREE_TYPE (fundecl)));
bool type_generic_remove_excess_precision = false;
@@ -3008,6 +3009,8 @@ convert_arguments (tree typelist, VEC(tree,gc) *values,
parmval = default_conversion (val);
VEC_replace (tree, values, parmnum, parmval);
+ if (parmval == error_mark_node)
+ error_args = true;
if (typetail)
typetail = TREE_CHAIN (typetail);
@@ -3021,7 +3024,7 @@ convert_arguments (tree typelist, VEC(tree,gc) *values,
return -1;
}
- return parmnum;
+ return error_args ? -1 : (int) parmnum;
}
/* This is the entry point used by the parser to build unary operators
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a0df7754230..1ded94269f7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/41842
+ * gcc.dg/pr41842.c: New test.
+
2009-10-27 Revital Eres <eres@il.ibm.com>
PR tree-optimization/40648
diff --git a/gcc/testsuite/gcc.dg/pr41842.c b/gcc/testsuite/gcc.dg/pr41842.c
new file mode 100644
index 00000000000..fa7edd11ecc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr41842.c
@@ -0,0 +1,8 @@
+/* PR c/41842 */
+/* { dg-do compile } */
+
+void
+f ()
+{
+ char x[g (h)]; /* { dg-error "undeclared|for each function" } */
+}
OpenPOWER on IntegriCloud