多分君は理屈が分かってないんだ。 あれはtypeグループごとにメモリフェンスしていて、 別typeグループに入っていると結果的にout-of-orderになるだけなんだよ。 それは常時動いている。 ただし different type で alias して無いと顕現しない(ユーザ側には見えない)というだけ。 だからその可能性がある部分にwarningが出る。 しかしwarningというのは「普通やらないけど大丈夫か?」であって「絶対駄目」ではない。 結局君は different type alias について正確に理解出来てないんだよ。
上記を覆したければ、alias無しで different type alias の最適化がかかっている例を持って来い。 君の言う、 > まぁそんなことは無いんだけどさ。 の例だね。多分無いから。
逆に考えてみろ。同じtypeグループ内、例えば int と int が out-of-order になったら話にならんだろ。 だから同typeグループ内は alias があっても in-orderになってる。 そして別グループ double と int は常にout-of-orderになってるが、当然、関数でつながれているときにはフェンスされる。 例えば int a = max_idx(double*) みたいな感じで、doubleの配列から最大値の添字を取るときとかね。 だから different type で alias して無いとそれが見えないようになってるんだよ。 というのが俺の理解だ。覆す例があればよろしく。