https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94794
Bug ID: 94794
Summary: coroutines: Support is needed for symmetric transter
on targets without arbitrary indirect tail-calls
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: iains at gcc dot gnu.org
Target Milestone: ---
For symmetric transfers to work with C++20 coroutines, it is
currently necessary to tail call the callee coroutine from resume
method of the caller coroutine.
Unfortunately, several targets have ABI constraints that prevent
arbitrary indirect tail-calls which means that we do not have a FE
design that works consistently (or at all for O < 2).
For some targets, where the tail calls are supported, it's possible
to mandate their use for O0 etc, but we'd need a target hook to test
this - the existing "ok for sib call" is not usable in the FE.