diff options
author | Jason Merrill <jason@redhat.com> | 2006-08-23 04:27:43 +0000 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2006-08-23 04:27:43 +0000 |
commit | 0ca01f9d4a209dbf99bf532fa1b23d8a3326b7aa (patch) | |
tree | f57a654d7d398768f77828698988e68d40c86e2e | |
parent | 00e7afc38f22d7df0da25602c878d89ff08b38cb (diff) |
PR c++/23372
* call.c (build_over_call): Don't make a copy here if build_call
will make one too.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@116342 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/call.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f50554cab56..ff60084b83c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-08-22 Jason Merrill <jason@redhat.com> + + PR c++/23372 + * call.c (build_over_call): Don't make a copy here if build_call + will make one too. + 2006-08-22 Andrew Pinski <pinskia@physics.uc.edu> PR C++/28450 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index ea89cdfed77..a91ecd015f8 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4847,6 +4847,12 @@ build_over_call (struct z_candidate *cand, int flags) tree type = TREE_VALUE (parm); conv = convs[i]; + + /* Don't make a copy here if build_call is going to. */ + if (conv->kind == ck_rvalue + && !TREE_ADDRESSABLE (complete_type (type))) + conv = conv->u.next; + val = convert_like_with_context (conv, TREE_VALUE (arg), fn, i - is_method); |