coroutines : Handle for await expressions in for stmts [PR98480].
authorIain Sandoe <iain@sandoe.co.uk>
Thu, 11 Mar 2021 14:22:37 +0000 (14:22 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Mon, 15 Mar 2021 15:50:25 +0000 (15:50 +0000)
commit26e0eb1071e318728bcd33f28d055729ac48792c
treee3154d2e79be26b4f6ae9768360e42d99ae51b50
parented8198461735f9b5b3c2cbe50f9913690ce4b4ca
coroutines : Handle for await expressions in for stmts [PR98480].

The handling of await expressions in the init, condition and iteration
expressions of for loops had been omitted.  Fixed thus.

gcc/cp/ChangeLog:

PR c++/98480
* coroutines.cc (replace_continue): Rewrite continue into
'goto label'.
(await_statement_walker): Handle await expressions in the
initializer, condition and iteration expressions of for
loops.

gcc/testsuite/ChangeLog:

PR c++/98480
* g++.dg/coroutines/pr98480.C: New test.
* g++.dg/coroutines/torture/co-await-24-for-init.C: New test.
* g++.dg/coroutines/torture/co-await-25-for-condition.C: New test.
* g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: New test.
gcc/cp/coroutines.cc
gcc/testsuite/g++.dg/coroutines/pr98480.C [new file with mode: 0644]
gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C [new file with mode: 0644]
gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C [new file with mode: 0644]
gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C [new file with mode: 0644]