public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/91427] Implement P1825R0, Merged wording for P0527R1 and P1155R3
[not found] <bug-91427-4@http.gcc.gnu.org/bugzilla/>
@ 2020-07-29 18:25 ` cvs-commit at gcc dot gnu.org
2020-09-09 22:06 ` jason at gcc dot gnu.org
1 sibling, 0 replies; 2+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-07-29 18:25 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91427
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>:
https://gcc.gnu.org/g:1722e2013f05f1f1f99379dbaa0c0df356da731f
commit r11-2412-g1722e2013f05f1f1f99379dbaa0c0df356da731f
Author: Jason Merrill <jason@redhat.com>
Date: Tue Jul 21 00:19:49 2020 -0400
c++: Implement C++20 implicit move changes. [PR91427]
P1825R0 extends the C++11 implicit move on return by removing the
constraints on the called constructor: previously, it needed to take an
rvalue reference to the type of the returned variable. The paper also
allows move on throw of parameters and implicit move of rvalue references.
Discussion on the CWG reflector about how to avoid breaking the PR91212
test
in the new model settled on the model of doing only a single overload
resolution, with the variable treated as an xvalue that can bind to
non-const lvalue references. So this patch implements that approach. The
implementation does not use the existing LOOKUP_PREFER_RVALUE flag, but
instead sets a flag on the representation of the static_cast turning the
variable into an xvalue.
For the time being I'm limiting the new semantics to C++20 mode; since it
was moved as a DR, we will probably want to apply the change to other
standard modes as well once we have a better sense of the impact on
existing
code, probably in GCC 12.
gcc/cp/ChangeLog:
PR c++/91427
* cp-tree.h (IMPLICIT_RVALUE_P): New.
(enum cp_lvalue_kind_flags): Add clk_implicit_rval.
(implicit_rvalue_p, set_implicit_rvalue_p): New.
* call.c (reference_binding): Check clk_implicit_rval.
(build_over_call): Adjust C++20 implicit move.
* coroutines.cc (finish_co_return_stmt): Simplify implicit move.
* except.c (build_throw): Adjust C++20 implicit move.
* pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Propagate
IMPLICIT_RVALUE_P.
* tree.c (lvalue_kind): Set clk_implicit_rval.
* typeck.c (treat_lvalue_as_rvalue_p): Overhaul.
(maybe_warn_pessimizing_move): Adjust.
(check_return_expr): Adjust C++20 implicit move.
gcc/testsuite/ChangeLog:
PR c++/91427
* g++.dg/coroutines/co-return-syntax-10-movable.C: Extend.
* g++.dg/cpp0x/Wredundant-move1.C: Adjust for C++20.
* g++.dg/cpp0x/Wredundant-move7.C: Adjust for C++20.
* g++.dg/cpp0x/Wredundant-move9.C: Adjust for C++20.
* g++.dg/cpp0x/elision_neg.C: Adjust for C++20.
* g++.dg/cpp0x/move-return2.C: Adjust for C++20.
* g++.dg/cpp0x/ref-qual20.C: Adjust for C++20.
* g++.dg/cpp2a/implicit-move1.C: New test.
* g++.dg/cpp2a/implicit-move2.C: New test.
* g++.dg/cpp2a/implicit-move3.C: New test.
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Bug c++/91427] Implement P1825R0, Merged wording for P0527R1 and P1155R3
[not found] <bug-91427-4@http.gcc.gnu.org/bugzilla/>
2020-07-29 18:25 ` [Bug c++/91427] Implement P1825R0, Merged wording for P0527R1 and P1155R3 cvs-commit at gcc dot gnu.org
@ 2020-09-09 22:06 ` jason at gcc dot gnu.org
1 sibling, 0 replies; 2+ messages in thread
From: jason at gcc dot gnu.org @ 2020-09-09 22:06 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91427
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Target Milestone|--- |11.0
Resolution|--- |FIXED
--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> ---
Implemented for GCC 11.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-09-09 22:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-91427-4@http.gcc.gnu.org/bugzilla/>
2020-07-29 18:25 ` [Bug c++/91427] Implement P1825R0, Merged wording for P0527R1 and P1155R3 cvs-commit at gcc dot gnu.org
2020-09-09 22:06 ` jason at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).