This fixes PR33357 where LVI recursed infinitely when used on dead blocks.
Now instead of the previous simple check where we just deemed a block dead
if it had no predecessors we now flush DDT and use DT to determine if
a block is really reachable from entry before processing it.
I have no idea if "overdefined" is the proper thing to use here, or if we should set it to "undefined" (by calling the LVILatticeVal() constructor)? Any opinions?