re PR c++/51223 (ICE with invalid function parameter)

/cp
2012-01-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51223
	* call.c (build_over_call): Check for error_mark_node as
	TREE_VALUE when default arguments are processed.

/testsuite
2012-01-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51223
	* g++.dg/parse/crash58.C: New.

From-SVN: r183472
This commit is contained in:
Paolo Carlini 2012-01-24 10:39:03 +00:00 committed by Paolo Carlini
parent a9d3ac1e89
commit 7cc35b68d5
4 changed files with 35 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51223
* call.c (build_over_call): Check for error_mark_node as
TREE_VALUE when default arguments are processed.
2012-01-23 Jason Merrill <jason@redhat.com>
PR c++/51930

View File

@ -6581,9 +6581,14 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
/* Default arguments */
for (; parm && parm != void_list_node; parm = TREE_CHAIN (parm), i++)
argarray[j++] = convert_default_arg (TREE_VALUE (parm),
TREE_PURPOSE (parm),
fn, i - is_method);
{
if (TREE_VALUE (parm) == error_mark_node)
return error_mark_node;
argarray[j++] = convert_default_arg (TREE_VALUE (parm),
TREE_PURPOSE (parm),
fn, i - is_method);
}
/* Ellipsis */
for (; arg_index < VEC_length (tree, args); ++arg_index)
{

View File

@ -1,3 +1,8 @@
2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51223
* g++.dg/parse/crash58.C: New.
2012-01-24 Jakub Jelinek <jakub@redhat.com>
PR target/51957

View File

@ -0,0 +1,16 @@
// PR c++/51223
struct A
{
A foo(void i = 0); // { dg-error "incomplete type|invalid use" }
};
void bar()
{
A().foo();
}
A A::foo(void i) // { dg-error "incomplete type|invalid use" }
{
return A();
}