]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++, coroutines: Ensure that the resumer is marked as can_throw.
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 7 Jun 2025 16:01:15 +0000 (17:01 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Fri, 13 Jun 2025 22:06:01 +0000 (23:06 +0100)
commite83c4bfc338fad0c87b2debb37ccfe98d148c7ac
treedca8ab69e9fb507836ed56dc3b2856b5018c5e90
parent9050cbed34135c8472c2654c4dd6a8739d69b92e
c++, coroutines: Ensure that the resumer is marked as can_throw.

We must flag that the resumer might throw (since the wrapping of the
original function body unconditionally adds a try-catch/rethrow). We
also add code that might throw - even when the original function body
would not.

TODO: We could improve code-gen by recognising cases where the combined
body + initial await expressions cannot throw and omitting the unneeded
try/catch/rethrow wrapper.

gcc/cp/ChangeLog:

* coroutines.cc (build_actor_fn): Set can_throw.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
gcc/cp/coroutines.cc