The Compiler does not do register tracing on volatile objects. Accesses to volatile objects are not eliminated. It also doesn't change word operations to byte operations on volatile objects as it does for other memory accesses.