coroutines: Fix for uses of structured binding [PR94701]
authorIain Sandoe <iain@sandoe.co.uk>
Mon, 27 Apr 2020 22:55:00 +0000 (23:55 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Mon, 27 Apr 2020 22:58:07 +0000 (23:58 +0100)
commit174b6f735019a11017284aaa23962cebd3943c99
treeb78b2db6fd38ea74975ece317e3488b08d485c1d
parentd8df7c404e233abb1e26d8b8370c460732904531
coroutines: Fix for uses of structured binding [PR94701]

Structured binding makes use of the DECL_VALUE_EXPR fields
in local variables.  We need to recognise these and only amend
the expression values, retaining the 'alias' value intact.

gcc/cp/ChangeLog:

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

PR c++/94701
* coroutines.cc (struct local_var_info): Add fields for static
variables and those with DECL_VALUE_EXPR redirection.
(transform_local_var_uses):  Skip past typedefs and static vars
and then account for redirected variables.
(register_local_var_uses): Likewise.

gcc/testsuite/ChangeLog:

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

PR c++/94701
* g++.dg/coroutines/torture/local-var-06-structured-binding.C: New test.
gcc/cp/ChangeLog
gcc/cp/coroutines.cc
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C [new file with mode: 0644]