CoroFrame: Put escaped variables with multiple lifetimes on coroutine frame
The llvm.lifetime.start intrinsic guarantees that the address for a given alloca is always the same. So variables with escaped addresses reaching reaching a lifetime start/end block before and after a suspend must be placed onto the coroutine frame even if the variable itself is not alive across the suspend point. This computes a new `LoopKill` flag in the suspend crossing data flow anaysis to catch the case where a lifetime marker can reach itself via suspend-crossing path. This fixes https://llvm.org/PR52501 Differential Revision: https://reviews.llvm.org/D140231
Loading
Please sign in to comment