<br><br><div class="gmail_quote">2012/8/1 Walter Bright <span dir="ltr"><<a href="mailto:walter@digitalmars.com" target="_blank">walter@digitalmars.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


That's what it means. But also, I have no idea what problem is addressed by not disallowing register allocation.<br></blockquote><div><br>I'm not sure I get the double negation the right way, but let me explain a very concrete example I faced.<br>

<br>I was doing OSless programming on an ARM device. This device also had an RS-232 port that was memory mapped. Read and write to/from that device were done at a given address and what you wrote to that address wasn't correlated with what you read.<br>

<br>It was really important that the compiler didn't removed any read, because 2 read at the same address would give 2 consecutive bytes recieved on the port. The same goes for write.<br><br>For that device, it was just important that the compiler don't reorder read and write to the device, and never removed any of them.<br>

<br>BTW, to me, volatile is a property of the memory location, not a statement. It fit better as a storage class that is applicable on data and that isn't transitive. This storage class would alter the semantic access of underlying memory.<br>

</div></div>