This patch is the refactor of D86190.
See pr46990(https://bugs.llvm.org/show_bug.cgi?id=46990). Instead of using idea (not sinking store instructions to loop exit blocks which cross coro.suspend intrinsics) in D86190. This patch split exit block of the suspend point alone and ignore it when do promotion.
Test Plan: check-llvm, pr46990
This isn't what I was looking for.
Say I'm someone who doesn't know anything about coroutines, and I'm writing a new optimization. What do I need to know about coroutines so I don't break them?