PR c++/80452 - Core 1579, implicit move semantics on return/throw
authorJason Merrill <jason@redhat.com>
Thu, 10 Aug 2017 19:07:30 +0000 (15:07 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 10 Aug 2017 19:07:30 +0000 (15:07 -0400)
commit4ce8c5dea53d80736b9c0ba6faa7430ed65ed365
tree35dee6c3dcd6215feee0eca6d281f1e78ffc2975
parenta0a10c6defa8e52d7b43aff169115028f07fb744
PR c++/80452 - Core 1579, implicit move semantics on return/throw

* cp-tree.h (LOOKUP_PREFER_RVALUE): Now means that we've already
tentatively changed the lvalue to an rvalue.
* call.c (reference_binding): Remove LOOKUP_PREFER_RVALUE handling.
(build_over_call): If LOOKUP_PREFER_RVALUE, check that the first
parameter is an rvalue reference.
* except.c (build_throw): Do maybe-rvalue overload resolution twice.
* typeck.c (check_return_expr): Likewise.

From-SVN: r251035
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/except.c
gcc/cp/typeck.c
gcc/testsuite/g++.dg/cpp0x/move-return1.C [new file with mode: 0644]