There could be successors that were reached before but now are only
reachable from elsewhere in the CFG.
Suppose the following diamond CFG (lines are arrows pointing down):
A / \ B C \ / D
There's a call site in C that is inlined. Upon doing that, it turns out
it expands to:
call void @llvm.trap() unreachable
D isn't reachable from C anymore, but we did discount it when we set up
FunctionPropertiesUpdater, so we need to re-include it here.
The patch also updates loop accounting to use LoopInfo rather than traverse BBs.