From 9a97342910aa762fd922a7d1fa91cee489f0a81d Mon Sep 17 00:00:00 2001 From: Lee Millward Date: Sat, 22 Jul 2006 14:07:57 +0000 Subject: [PATCH] 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 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/method.c | 4 ++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/other/error10.C | 10 ++++++++++ 4 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/other/error10.C 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" } -- 2.47.2