https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120400

Iain Sandoe <iains at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-05-23
             Status|UNCONFIRMED                 |NEW

--- Comment #14 from Iain Sandoe <iains at gcc dot gnu.org> ---
(In reply to Jason Merrill from comment #13)
> Created attachment 61500 [details]
> possible fix
> 
> Does this fix the issue?

Yes, it does .. that's the kind of thing I was hoping for ...

we also need the changes below - which I'll post separately.


@@ -5017,7 +5020,7 @@ cp_coroutine_transform::build_ramp_function ()
       tree frame_cleanup = push_stmt_list ();
       tree do_fr_cleanup
        = build1_loc (loc, TRUTH_NOT_EXPR, boolean_type_node, iarc_x);
-      do_fr_cleanup = build2_loc (loc, TRUTH_AND_EXPR, boolean_type_node,
+      do_fr_cleanup = build2_loc (loc, TRUTH_ANDIF_EXPR, boolean_type_node,
                                  coro_before_return, do_fr_cleanup);
       r = build3 (COND_EXPR, void_type_node, do_fr_cleanup,
                             delete_frame_call, void_node);
@@ -5109,7 +5112,7 @@ cp_coroutine_transform::build_ramp_function ()
                  tree do_cleanup
                    = build1_loc (loc, TRUTH_NOT_EXPR, boolean_type_node,
iarc_x);
                  do_cleanup
-                   = build2_loc (loc, TRUTH_AND_EXPR, boolean_type_node,
+                   = build2_loc (loc, TRUTH_ANDIF_EXPR, boolean_type_node,
                                  coro_before_return, do_cleanup);
                  r = build3_loc (loc, COND_EXPR, void_type_node, do_cleanup,
                                  parm.fr_copy_dtor, void_node);
@@ -5169,7 +5172,7 @@ cp_coroutine_transform::build_ramp_function ()
          tree promise_cleanup = push_stmt_list ();
          tree do_cleanup
            = build1_loc (loc, TRUTH_NOT_EXPR, boolean_type_node, iarc_x);
-         do_cleanup = build2_loc (loc, TRUTH_AND_EXPR, boolean_type_node,
+         do_cleanup = build2_loc (loc, TRUTH_ANDIF_EXPR, boolean_type_node,
                                   coro_before_return, do_cleanup);
          r = build3 (COND_EXPR, void_type_node, do_cleanup,
                      promise_dtor, void_node);

Reply via email to