Commit 7cc35b68 by Paolo Carlini Committed by Paolo Carlini

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
parent a9d3ac1e
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
......
......@@ -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)
{
......
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
......
// 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();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment