You have to look deeper for the OOB array access question.  For example, imagine I have code like this:<p><pre><code>  if (a &gt; 1)
    b++;
  array[b] = 0;
  c = a + 10;
</code></pre>
Under your suggested semantics, can the compiler use the value loaded from `a` at the point of the if() statement to calculate `a + 10`? Or does it have to emit a reload of `a` after the array access, in case `array[b]` was an OOB access that overwrote `a`?