Pretty please don't top-post.
Interesting compiler treatment of volatile by the compiler.
IOW, your seeing the cached value of the memory location (which isn't memory).
What are the other variables on the cache line? More registers? RAM? If registers, then you need to disable the cache for that region of memory. It would be highly unlikely that the locations surrounding a status register would be RAM used for "normal" program variables.