https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100476
--- Comment #4 from Iain Sandoe <iains at gcc dot gnu.org> --- great, that does simplify things - and means that a useful error can be diagnosed from a mismatched type between g_r_o/g_r_o_o_a_f and the coroutine ramp return value. The statement about phasing of the calls does mean that the expression has to be evaluated quite early (before the initial call to the actor function).