Right, that's why it is incorrect to refer to it as "standard" behavior.
Behaviors I've seen include various combinations of:
1. disallowing enregistering
2. preventing folding multiple loads/stores together
3. preventing reordering across expressions with volatiles
4. inserting memory load/store fences
1 && 2 for memory-mapped IO and 3 && 4 for concurrent access to shared
memory.
D volatile isn't implemented, either.
At least for dmd it disables instruction rescheduling.
_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals