http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58409
--- Comment #2 from Francesco Zappa Nardelli <francesco.zappa.nardelli at gmail dot com> --- Yes, it does fix the issue. So this reordering is another effect of gcc not considering accessing volatile fields in non-volatile structs as volatile access (as in bug 47409). Can I ask about gcc plans for bug 47409? It has been opened for a couple of years without a clear decision at the end.