We remove unreachable block only in fgRemoveUnreachableBlocks in fgRemoveUnreachableBlocks that we run before assertion propogation and CSE that can change set of dead blocks.
Also, when we create internal block we mark them as:
newBlk->bbFlags |= BBF_IMPORTED;
newBlk->bbFlags |= BBF_DONT_REMOVE;
and can't delete when they become dead (and can't say that they are dead because Note that no bbJumpDest points to these blocks..