coroutines: Fix cases where proxy variables are used [PR94879]
authorIain Sandoe <iain@sandoe.co.uk>
Mon, 27 Apr 2020 14:21:25 +0000 (15:21 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Thu, 30 Apr 2020 14:56:44 +0000 (15:56 +0100)
commitb16fd5fd8afe6f95c8ae44e759971e605c31f97b
tree8abba6dba3e6e635536ea971ca7cb13a06f93a67
parent04e88369a7d95492efccf8f527d27cca74664ea7
coroutines: Fix cases where proxy variables are used [PR94879]

There are several places where the handling of a variable
declaration depends on whether it corresponds to a compiler
temporary, or to some other entity.  We were testing that var
decls were artificial in determining this.  However, proxy vars
are also artificial so that this is not sufficient.  The solution
is to exclude variables with a DECL_VALUE_EXPR as well, since
the value variable will not be a temporary.

gcc/cp/ChangeLog:

2020-04-30  Iain Sandoe  <iain@sandoe.co.uk>

PR c++/94879
* coroutines.cc (build_co_await): Account for variables
with DECL_VALUE_EXPRs.
(captures_temporary): Likewise.
(register_awaits): Likewise.

gcc/testsuite/ChangeLog:

2020-04-30  Iain Sandoe  <iain@sandoe.co.uk>

PR c++/94879
* g++.dg/coroutines/pr94879-folly-1.C: New test.
gcc/cp/ChangeLog
gcc/cp/coroutines.cc
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/coroutines/pr94879-folly-1.C [new file with mode: 0644]