This just uses the higher level API rather than writing out the steps separately. Tested on x86_64-darwin, powerpc64-linux, pushed as obvious, thanks Iain
--- 8< --- Just shorter code. gcc/cp/ChangeLog: * coroutines.cc (cp_coroutine_transform::wrap_original_function_body): Use finish_if_stmt instead of manually applying the same process. Signed-off-by: Iain Sandoe <i...@sandoe.co.uk> --- gcc/cp/coroutines.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc index c286af7bd07..1d75bbdf5d1 100644 --- a/gcc/cp/coroutines.cc +++ b/gcc/cp/coroutines.cc @@ -4483,10 +4483,7 @@ cp_coroutine_transform::wrap_original_function_body () suppress_warning (rethrow); finish_expr_stmt (rethrow); finish_then_clause (not_iarc_if); - tree iarc_scope = IF_SCOPE (not_iarc_if); - IF_SCOPE (not_iarc_if) = NULL; - not_iarc_if = do_poplevel (iarc_scope); - add_stmt (not_iarc_if); + finish_if_stmt (not_iarc_if); /* ... else call the promise unhandled exception method but first we set done = true and the resume index to 0. If the unhandled exception method returns, then we continue -- 2.39.2 (Apple Git-143)