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
Is there any particular reason to expect the edge from the coro_suspend to the coro_end is a switch?