We found one use-after-free case that the data(GV) in GlobalCtors is used after it's freed in GetOrCreateLLVMGlobal:Entry->eraseFromParent();.
As mentioned in the comments, when there is a conflict with the global creation, it will replace old one and update all the old usages with the new one, so here this patch tries to fix it by using ValueHandle for associated data of GlobalCtors.
Here is the replaceAllUsesWith .