http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56028
--- Comment #8 from Paul E. McKenney <paulmck at linux dot vnet.ibm.com> 2013-01-19 12:35:12 UTC --- Indeed, different hardware implementations can cause all sorts of mischief. Nevertheless, the compiler should not also provide mischief in these cases. In addition, as noted in comment 5, there is legacy software. I understand and completely support use of atomics when they are generally available (having assisted in their definition), but many projects will need to work with older compilers for quite some time to come. Therefore, volatile loads, which are only idiom available in these older compilers, needs to continue to provide the needed functionality. Again as noted in comment 5, volatile stores of reasonably-sized basic types must be atomic.