Andres-Salamanca wrote:

My last commit makes a fairly large structural change:

* Removes `cir.coroBody` and introduces `cir.coroutine`. The logic previously 
handled by `cir.coroBody` is now part of the `body` region of `cir.coroutine`, 
so `cir.co_return` now lives directly in that region. The new `cir.co_return` 
verifier also checks that it is only used inside the coroutine `body` region.
* Renames the previous `prolog`/`epilog` regions to 
`initial_suspend`/`final_suspend`. I think this terminology is closer to the 
coroutine model: `initial_suspend` represents the coroutine ramp/setup phase, 
while `final_suspend` marks the point where the coroutine has completed and 
enters its final suspension/destruction flow.
*  `gro` and `unwind` regions for future PRs.
* The `destroy` and `unwind` regions will be treated similarly to cleanup 
regions in the loop operations. I did not introduce an explicit cleanup kind: 
`destroy` is always `all`, while `unwind` is `eh`.
* I also stopped using `builder.restoreInsertionPoint`, as discussed.


https://github.com/llvm/llvm-project/pull/213191
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to