diff options
author | Jason Merrill <jason@redhat.com> | 2013-04-25 16:25:17 +0000 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2013-04-25 16:25:17 +0000 |
commit | 816f706dc1806912f8ec646931b9b952bae9bdf0 (patch) | |
tree | 2956c0ac58cab0757da40c8dddc0ac2921a15499 /gcc/cp | |
parent | 94a99638b4b32bbc77863aa4211a122542c64337 (diff) |
PR c++/57064
* call.c (add_function_candidate): Strip ref-to-ptr conversion.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch@198314 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/call.c | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4c8b4bde874..d5f339c04b4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2013-04-25 Jason Merrill <jason@redhat.com> + PR c++/57064 + * call.c (add_function_candidate): Strip ref-to-ptr conversion. + PR c++/56859 * typeck.c (cxx_alignas_expr): Handle value-dependence properly. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index f575daedb08..72c1dac2566 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -1959,6 +1959,10 @@ add_function_candidate (struct z_candidate **candidates, object parameter has reference type. */ bool rv = FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (fn)); parmtype = cp_build_reference_type (parmtype, rv); + if (TREE_CODE (arg) == CONVERT_EXPR + && TYPE_PTR_P (TREE_TYPE (arg))) + /* Strip conversion from reference to pointer. */ + arg = TREE_OPERAND (arg, 0); arg = build_fold_indirect_ref (arg); argtype = lvalue_type (arg); } |