I&#x27;m not seeing the deeper question, whereas what &#x27;userbinator&#x27; said still makes sense to me.<p>The compiler&#x27;s implementation defined behavior would simply be &quot;if you tell me to write a value to an address, I&#x27;ll create assembly that tries to write that value to that address&quot;.  That&#x27;s all.  If this address is outside the allocated range of the array, there is no guarantee that it&#x27;s safe that write this value, or that it won&#x27;t break something else.<p>So in your example, no, the compiler is not required to reload &#x27;a&#x27;.   The compiler is allowed to presume that the array[x] syntax will have no affect on the value of a local variable, whether that variable is stored in a register or on the stack.  The compiler is not guaranteeing safety, just best effort.