<div dir="ltr">On 16 February 2013 00:38, Daniel Berlin <span dir="ltr"><<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><span style="color:rgb(34,34,34)">you fall into the "otherwise, the behavior is undefined".</span><br>
</div>
<br>
It would be explicitly valid to convert it to char *, and read it up<br>
to and through B, but not using the array access operator.<br></blockquote><div><br></div><div style>Unfortunately, "undefined behaviour" is valid C. It means you'll have to compile that without error (possibly a warning), but you're allowed to do whatever you want.</div>
<div style><br></div><div style>Clang sometimes remove accesses if they're going to go outside the boundaries (if it can tell) as optimization, as we seen in the Livermore Loops example. GCC vectorizes a loop when the only aliasing possible is with out-of-bounds access (thus getting different results). All that falls into the category of "user error", so both Clang and GCC won't change their behaviour on optimized builds.</div>
<div style><br></div><div style>cheers,</div><div style>--renato</div></div></div></div>