diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2020-06-27 08:18:34 +0100 |
---|---|---|
committer | Iain Sandoe <iain@sandoe.co.uk> | 2020-06-27 09:43:54 +0100 |
commit | daaed0199ee57013ae011421a7e90b7bdd295373 (patch) | |
tree | 3c3047efa45a9dfa3f8f3b9e178fea691f99deb1 /gcc/tree-ssa-dom.c | |
parent | 9c5ca11a33fa91345fe813d449ddc4a821fc72d5 (diff) | |
download | gcc-daaed0199ee57013ae011421a7e90b7bdd295373.zip gcc-daaed0199ee57013ae011421a7e90b7bdd295373.tar.gz gcc-daaed0199ee57013ae011421a7e90b7bdd295373.tar.bz2 |
coroutines: Handle awaiters that are sub-objects [PR95736]
Move deciding on initializers for awaitables to the build of the
co_await, this allows us to analyse cases that do not need
a temporary at that point.
As the PR shows, the late analysis meant that we were not
checking properly for the case that an awaiter is a sub-object
of an existing variable outside the current function scope (and
therefore does not need to be duplicated in the frame).
gcc/cp/ChangeLog:
PR c++/95736
* coroutines.cc (get_awaitable_var): New helper.
(build_co_await): Check more carefully before
copying an awaitable.
(expand_one_await_expression): No initializer
is required when the awaitable is not a temp.
(register_awaits): Remove handling that is now
completed when the await expression is built.
gcc/testsuite/ChangeLog:
PR c++/95736
* g++.dg/coroutines/pr95736.C: New test.
Diffstat (limited to 'gcc/tree-ssa-dom.c')
0 files changed, 0 insertions, 0 deletions