diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-05-08 00:26:08 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-05-08 00:26:08 +0000 |
commit | 15218346beeb55b415d3b5db378b4e70e454535d (patch) | |
tree | 673bdd2ddc7b3a78d3beea7aec96671c36be06f5 /gcc | |
parent | abf5fd2fab6d66bfeba0c7f8d63cfd40fa23df32 (diff) | |
download | gcc-15218346beeb55b415d3b5db378b4e70e454535d.zip gcc-15218346beeb55b415d3b5db378b4e70e454535d.tar.gz gcc-15218346beeb55b415d3b5db378b4e70e454535d.tar.bz2 |
re PR c++/27447 (ICE on invalid ptr-to-member-function)
PR c++/27447
* decl2.c (build_memfn_type): Skip invalid functions and class types.
* g++.dg/other/ptrmem7.C: New test.
From-SVN: r113615
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/ptrmem7.C | 4 |
4 files changed, 17 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5035ded..a357204 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-05-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/27447 + * decl2.c (build_memfn_type): Skip invalid functions and class types. + 2006-05-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de> PR c++/27427 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index ac85b44..f75c4ab 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -114,6 +114,9 @@ build_memfn_type (tree fntype, tree ctype, cp_cv_quals quals) tree raises; int type_quals; + if (fntype == error_mark_node || ctype == error_mark_node) + return error_mark_node; + type_quals = quals & ~TYPE_QUAL_RESTRICT; ctype = cp_build_qualified_type (ctype, type_quals); fntype = build_method_type_directly (ctype, TREE_TYPE (fntype), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f15d7fc..0403b74 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-05-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/27447 + * g++.dg/other/ptrmem7.C: New test. + 2006-05-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de> PR target/27421 diff --git a/gcc/testsuite/g++.dg/other/ptrmem7.C b/gcc/testsuite/g++.dg/other/ptrmem7.C new file mode 100644 index 0000000..e7722b8 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/ptrmem7.C @@ -0,0 +1,4 @@ +// PR c++/27447 +// { dg-do compile } + +void (A::* p)(); // { dg-error "declared|token" } |