If these blocks are unreachable, then we can discard all of the instructions. However, keep the block around because it may have an address taken or the block may have a stale reference from a PHI somewhere. Instead of finding those PHIs and fixing them up, just leave the block empty.
This was motivated by https://reviews.llvm.org/D110603 which ran into this problem.
What happens if the unreachable block defines a value %val that is used in the phi? Will it be handled some way or lead to a verifier error? (I don't know this code at all so perhaps it's totally obvious it will just work out nicely.)