volatileをつけてコンパイラが(一見)正しいコードを生成しても
CPUが順番を変えて実行したりする

マルチコア、OoO時代は
同期コードを自分で書くのは色々な意味でやめた方が良い
SFRアクセスには使えるが