diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C new file mode 100644 index 000000000..36145cf01 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// GROUPS passed pointers-to-members +struct C { + struct N { + int g1(int); + int g2(int); + }; + + typedef int (N::*pmfn)(int); + + int f1(int); + int f2(int); +}; + +int (C::*f)(int) = &C::f1; + +/* + The compiler should not crash on the line below; this change fixes it: + * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't + have TYPE_PTRMEMFUNC_P set before we try to build its + CLASSTYPE_ID_AS_LIST. +*/ + +C::pmfn h = &C::N::g1; + +int (C::N::*g)(int) = &C::N::g2; |