Information is gleaned not only from assignment statements and initializations but also from conditionals. Value tracking allows us to diagnose the possible use of the NULL pointer. Clearly both of these statements should have been within the scope of the if .
Bounds checking is done only on the high side.
But in neither case can you access such a pointer. As indicated earlier, we do not check on subscripts being effectively negative. We check only on the high side of an array. Such redundant tests are usually benign but they can be a symptom of faulty logic and deserve careful scrutiny. In the above case, a warning is issued where there is no real danger.