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

Reply via email to