Commit 89b01e86 by Iain Sandoe

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.
parent 6a90680b
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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment