https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94359
--- Comment #5 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Iain Sandoe from comment #4) > So not sure how to proceed here at the moment (I wonder if this works for > PPC on the clang impl). It does work for X86 (and ironically, on PPC Darwin too - where the fact that we build a new "got" in each routine + no use of TOC means we can always tail call). Actually, I'm a bit suspicious of what happens in the case that two coroutines are in different DSOs for X86. apparently not: [iains@gcc1-power7 llvm-90]$ ./INSTL/bin/clang++ -fcoroutines-ts -std=c++17 ../gcc-master/src/gcc/testsuite/g++.dg/coroutines/torture/symmetric-transfer-00-basic.C -stdlib=libc++ -S fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail (the test case crashes the compiler for O>0). [iains@gcc1-power7 llvm-10]$ ./INSTL/bin/clang++ -fcoroutines-ts -std=c++17 ../gcc-master/src/gcc/testsuite/g++.dg/coroutines/torture/symmetric-transfer-00-basic.C -stdlib=libc++ -S fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail I'm going to discuss this with the coroutines paper authors - as to whether any constraints had been considered. Note, once again, that failure to implement this does not make us non-conforming.