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)

Reply via email to