It does not handle loops correctly i.e it moves the lifetime.start
intrinsic into a loop rendering the stack object as not alive for part
of the loop.
entry: %obj = alloca i8 lifetime.start(%obj) br loop loop: coro.suspend() escape(%obj) cond_br %cond, label %exit, label loop br loop exit: lifetime.end(%obj
After sinking:
entry: %obj = alloca i8 br loop loop: coro.suspend() lifetime.start(%obj) escape(%obj) cond_br %cond, label %exit, label loop br loop exit: lifetime.end(%obj
rdar://83411917