コンパイラの使命はソースコードに書かれたアルゴリズムと等価なオブジェクトコードを生成すること
つまりアルゴリズムの等価性が証明できる範囲内なら何だってする
外部リンケージの関数呼び出し順序を入れ替えないのは、
外部リンケージの関数が副作用を持たないことの証明が高コスト過ぎて割に合わないからやらないだけにすぎない
外部リンケージの関数呼び出し順序は未来永劫変わることはないのだと安心しきっていると
ある日マルチスレッド状況下で反乱されて人類は死ぬ
volatileの手綱は決して緩めてはならぬ