[clang] [llvm] [coro] Lower `llvm.coro.await.suspend.handle` to resume with tail call (PR #89751)

via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 23 11:28:02 PDT 2024


zmodem wrote:

> Does this address https://discourse.llvm.org/t/coro-pre-split-handling-of-the-suspend-edge/75043? Could you add a note there in that direction - a few folks were looking at going at the direction @jyknight was suggesting there, and it'd be good to have closure on the topic.

Thanks for the pointer! If I understand things correctly:

* Yes, my patch addresses the problem of instructions in the suspend block getting in the way of lowering symmetric transfer as a tail call.
* With my patch, something could still put instructions between the llvm.coro.await.suspend.handle and the suspend, and those would become unreachable. I don't think that's a problem in practice though. The frontend shouldn't do that, and I don't think any transform would move instructions across the intrinsic call.
* My patch doesn't address the more general concern in that thread about that edge being a strange representation.

https://github.com/llvm/llvm-project/pull/89751


More information about the llvm-commits mailing list