llvm-project
9f77c26e - [CoroEarly] Hide promise alloca for later passes (#139243)

Commit
215 days ago
[CoroEarly] Hide promise alloca for later passes (#139243) Currently coroutine promises are modeled as allocas. This is problematic because other middle-end passes will assume promise dead after coroutine suspend, leading to misoptimizations. I propose the front ends remain free to emit and use allocas to model coro promise. At CoroEarly, we will replace all uses of promise alloca with `coro.promise`. Non coroutine passes should only access promise through `coro.promise`. Then at CoroSplit, we will lower `coro.promise` back to promise alloca again. So that it will be correctly collected into coro frame. Note that we do not have to bother maintainers of other middle-end passes. Fix #105595
Author
Parents
Loading