re PR c++/37554 (ICE with invalid cast)

/cp
2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/37554
	* call.c (build_over_call): If convert_for_arg_passing returns
	error_mark_node unconditionally return it.

/testsuite
2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/37554
	* g++.dg/parse/crash51.C: New.
	* g++.old-deja/g++.pt/crash9.C: Adjust.

From-SVN: r143711
This commit is contained in:
Paolo Carlini 2009-01-27 19:47:28 +00:00 committed by Paolo Carlini
parent 79e5286cba
commit 267e265c52
5 changed files with 25 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2009-01-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/37554
* call.c (build_over_call): If convert_for_arg_passing returns
error_mark_node unconditionally return it.
2009-01-22 Adam Nemet <anemet@caviumnetworks.com>
* class.c (check_field_decls): Also inherit packed for bitfields

View File

@ -5276,7 +5276,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
(conv, TREE_VALUE (arg), fn, i - is_method, complain);
val = convert_for_arg_passing (type, val);
if ((complain == tf_none) && val == error_mark_node)
if (val == error_mark_node)
return error_mark_node;
else
argarray[j++] = val;

View File

@ -1,3 +1,9 @@
2009-01-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/37554
* g++.dg/parse/crash51.C: New.
* g++.old-deja/g++.pt/crash9.C: Adjust.
2009-01-27 Daniel Kraft <d@domob.eu>
PR fortran/38883

View File

@ -0,0 +1,9 @@
// PR c++/37554
struct A {};
class B : A {};
void foo(B b)
{
(A)b; // { dg-error "inaccessible base" }
}

View File

@ -1,11 +1,11 @@
// { dg-do assemble }
template <class T>
void f(T) {} // { dg-error "" } parameter has incomplete type
void f(T) {}
class C; // { dg-error "" } forward declaration
class C; // { dg-error "forward declaration" }
void g(const C& c)
{
f(c); // { dg-error "" } invalid use of undefined type
f(c); // { dg-error "invalid use of incomplete type|initializing argument" }
}