diff options
author | Mark Mitchell <mark@codesourcery.com> | 2005-07-28 18:08:59 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2005-07-28 18:08:59 +0000 |
commit | 796cccfcc36d87e8112972dcbd97e9693f014fc7 (patch) | |
tree | c77bc21f4159ec5cc5bfdbc005ac6e3d466a9f9e /gcc | |
parent | 8d039470f6ddd258edc714519a25a39b270c09d3 (diff) | |
download | gcc-796cccfcc36d87e8112972dcbd97e9693f014fc7.zip gcc-796cccfcc36d87e8112972dcbd97e9693f014fc7.tar.gz gcc-796cccfcc36d87e8112972dcbd97e9693f014fc7.tar.bz2 |
re PR c++/22545 (ICE with pointer to class member & user defined conversion operator)
PR c++/22545
* call.c (add_builtin_candidate): Adjust for changes in
representation of pointer-to-member types.
PR c++/22545
* g++.dg/expr/ptrmem7.C: New test.
From-SVN: r102500
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/call.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/expr/ptrmem7.C | 21 |
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 31e3d97..5a3be7c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-07-28 Mark Mitchell <mark@codesourcery.com> + + PR c++/22545 + * call.c (add_builtin_candidate): Adjust for changes in + representation of pointer-to-member types. + 2005-07-28 Mike Stump <mrs@apple.com> * pt.c (check_explicit_specialization): Add visibility logic. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 609fe45..cdc068c 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -1701,7 +1701,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code, if (IS_AGGR_TYPE (c1) && DERIVED_FROM_P (c2, c1) && (TYPE_PTRMEMFUNC_P (type2) - || is_complete (TREE_TYPE (TREE_TYPE (type2))))) + || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2)))) break; } return; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64fa8fe..614a8b8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-07-28 Mark Mitchell <mark@codesourcery.com> + + PR c++/22545 + * g++.dg/expr/ptrmem7.C: New test. + 2005-07-28 Mike Stump <mrs@apple.com> * g++.old-deja/g++.mike/visibility-1.C: New test. diff --git a/gcc/testsuite/g++.dg/expr/ptrmem7.C b/gcc/testsuite/g++.dg/expr/ptrmem7.C new file mode 100644 index 0000000..a94990e --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/ptrmem7.C @@ -0,0 +1,21 @@ +// PR c++/22545 + +struct A { + int member; + A() : member(13) {} +}; + +A a; + +struct B { + operator A*() { return &a; } +}; + +B b; + +int A::* member_pntr = &A::member; + +int main() +{ + return b ->* member_pntr; +} |