AIUI, this code is not affected:<p><pre><code>  X *foo = ...;
  if (foo) foo-&gt;bar();
</code></pre>
But this code will be:<p><pre><code>  X *foo = ...;
  foo-&gt;bar();
  if (foo) { ... }
</code></pre>
Since foo is dereferenced unconditionally, the compiler is allowed to assume that it will not be null in the above code, and therefore the test on the third line to determine whether foo is null or not is useless and can be omitted.