It is a known problem that we can't align the switch-based coroutine frame if the alignment exceeds std::max_align_t (which is 16 usually).
Previously, the switch coroutine is used for C++. And I image that the problem could be solved at the language side and we could implement the corresponding proposal.
However, MLIR uses switch-based coroutine now. And they meet the same question: https://github.com/llvm/llvm-project/issues/53148. Luckily, the semantics of MLIR is less constraint than C++. So we could solve the problem in MLIR by offering a llvm.coro.align intrinsic. And the intrinsic should be able to be reused when we try to solve the problem in C++.