This is intended to fix the TLS problem in coroutine described in https://github.com/llvm/llvm-project/issues/47179
Simply, we would assume the address of a TLS variable is same in one function. Since a function should be executed in one thread only. However, it is not true for unlowered coroutine. This patch tries to fix the problem by adding a wrapper for every TLS variable to block the alias analysis. Note that we couldn't do this for unlowered coroutine only due to inlining. Also the compiler is still available to optimize TLS variables for lowered coroutine.
UserInst might not be a legal insertion point for a call if it's a PHI node.