mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 17:21:03 +08:00
coroutines, ensure placeholder var is properly declared.
In cases that we need to extended the lifetime of a temporary captured by reference, we make a replacement var for the temporary. This will be then used to define a coroutine frame entry (so that the var created is elided by a later phase). However, we should ensure that the var is correctly declared anyway. gcc/cp/ChangeLog: 2020-04-07 Iain Sandoe <iain@sandoe.co.uk> * coroutines.cc (maybe_promote_captured_temps): Ensure that reference capture placeholder vars are properly declared.
This commit is contained in:
parent
6a90680bff
commit
89b01e86ff
@ -1,3 +1,8 @@
|
||||
2020-04-07 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
* coroutines.cc (maybe_promote_captured_temps): Ensure that
|
||||
reference capture placeholder vars are properly declared.
|
||||
|
||||
2020-04-07 Patrick Palka <ppalka@redhat.com>
|
||||
|
||||
PR c++/90996
|
||||
|
@ -2832,7 +2832,9 @@ maybe_promote_captured_temps (tree *stmt, void *d)
|
||||
sloc = DECL_SOURCE_LOCATION (orig_temp);
|
||||
DECL_SOURCE_LOCATION (newvar) = sloc;
|
||||
DECL_CHAIN (newvar) = varlist;
|
||||
varlist = newvar;
|
||||
varlist = newvar; /* Chain it onto the list for the bind expr. */
|
||||
/* Declare and initialze it in the new bind scope. */
|
||||
add_decl_expr (newvar);
|
||||
tree stmt
|
||||
= build2_loc (sloc, INIT_EXPR, var_type, newvar, to_replace);
|
||||
stmt = coro_build_cvt_void_expr_stmt (stmt, sloc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user