geln12の日記: 情けは人のためならず
日記 by
geln12
エラーが生じたので調べろ、との下命をうけて調べていました。
「-O2」で最適化コンパイルするとうまくいかなくなる罠。「-O」だとエラーにならない。
よく見たら、グローバル変数と同じ変数名を関数定義の際に引数の名前として用いている場所をみつけました。で、関数を呼び出す際には引数にはグローバル変数とは違う値を入れていた。
コンパイラが「-O」だと別々のものだとしてコンパイルしていたのに、「-O2」だと親切なことに
『なんだよ、これとこれって一緒じゃん。なら一緒にしちゃうよ』
とコンパイルしてしまうようだ。で、期待していた結果が出てこないのでエラー。
……という理解は正しいのかしら。
最適化コンパイルをきちんと理解していないんだけど。
情けは人のためならず More ログイン