From: Lee Millward Date: Sat, 22 Jul 2006 14:07:57 +0000 (+0000) Subject: re PR c++/28258 (ICE with invalid constructor) X-Git-Tag: releases/gcc-4.0.4~507 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a97342910aa762fd922a7d1fa91cee489f0a81d;p=thirdparty%2Fgcc.git re PR c++/28258 (ICE with invalid constructor) PR c++/28258 * method.c (locate_copy): Check for non_reference returning error_mark_node. * g++/dg/other/error10.C: New test. From-SVN: r115675 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b8e75fdb8418..fa949db4770d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-07-22 Lee Millward + + PR c++/28258 + * method.c (locate_copy): Check for non_reference + returning error_mark_node. + 2006-07-21 Volker Reichelt PR c++/28363 diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 3126237b2a1a..42211a1af570 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -932,6 +932,10 @@ locate_copy (tree type, void *client_) if (!parms) continue; src_type = non_reference (TREE_VALUE (parms)); + + if (src_type == error_mark_node) + return NULL_TREE; + if (!same_type_ignoring_top_level_qualifiers_p (src_type, type)) continue; if (!sufficient_parms_p (TREE_CHAIN (parms))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 810230f41846..e942d5df1832 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-07-22 Lee Millward + + PR c++/28258 + * g++/dg/other/error10.C: New test. + 2006-07-21 Volker Reichelt PR c++/28363 diff --git a/gcc/testsuite/g++.dg/other/error10.C b/gcc/testsuite/g++.dg/other/error10.C new file mode 100644 index 000000000000..037e28866e10 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/error10.C @@ -0,0 +1,10 @@ +//PR c++/28258 + +struct A +{ // { dg-error "" } + A(void x); // { dg-error "invalid use|incomplete type|candidates" } +}; + +struct B : A {}; // { dg-error "no matching function for call" } + +B b; // { dg-error "synthesized method" }