アカウント名:
パスワード:
リリースされるや否やSPEC 2006ベンチをコンパイルするとぶっ壊れたコード吐く [lwn.net]って騒ぎになってるのに、あえてそちらはスルーしてこのタレコミ人が突っ込んだ-O3 -ffast-mathつけると結果が変わるぞゴラァ [gnu.org]とかいう話の方を取り上げて「バグもすぐ直してくれる」とか結んじゃうんだ…凄えなこのタレコミ人・・・・・・・某ドラッカーじゃないけど、もうちょっと真摯にタレコミしてくれないもんかね
# 「gccって-O3 -ffast-mathつけてビルドして結果が変わったらバグ扱いにしてくれるんだってよ」ってGentoo使いに教えてやりたいね(笑)
Fortranは規格違反のコード書いたら鼻から悪魔が出てもいいなんて頭おかしい仕様じゃないから(むしろそんなのはC/C++くらいだろ)。
そこまで解析して最適化するなら、もうちょっと先まで解析してよとは思いますね※昔は無意味なループ削除とかやらなかったのに…ストールマン曰く「プログラマーは無意味なループを書かない」、今回の最適化はここからかけ離れてますね
ループは削除してないしwhile (1) { f(); if (p()) break; g();}みたいなコードで毎回1と0を比べて欲しいのかい
ループ削除は例です現実的にwhile(1)じゃないコードをwhile(1)扱いしてるのが問題なわけで
規格に則っていない以上、どう解釈されても文句は言えないでしょ。GCCは、配列a[n]のn番目のアクセスしなくていいよう辻褄を合わせただけ。n番目にアクセスしないならi<nの判定式は必要ない。プログラマーは、別の方法でループを抜ける方法を実装できるわけだし、実際している場合もある、その場合判定は2つも要らない。。
フェイルセーフにしなかったって事ですねまあ仕様の穴をどうにかしろって事なんでしょうが、穴のない仕様を作るも結構たいへんですし実装者の趣味・趣向が問われるところですね
プログラマが不正なアクセスしない事を把握した上でコードを簡易化するために配列を「1」オーバーするコードを書く場合もあると思いますが
>プログラマが不正なアクセスしない事を把握した上でコードを簡易化するために配列を「1」オーバーするコードを書く場合もあると思いますがありません。というかどうやって把握するのでしょうか?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
gccの初物は危なすぎっていうか… (スコア:-1)
リリースされるや否やSPEC 2006ベンチをコンパイルするとぶっ壊れたコード吐く [lwn.net]って騒ぎになってるのに、あえてそちらはスルーして
このタレコミ人が突っ込んだ-O3 -ffast-mathつけると結果が変わるぞゴラァ [gnu.org]とかいう話の方を取り上げて「バグもすぐ直してくれる」とか結んじゃうんだ…
凄えなこのタレコミ人・・・・・・・
某ドラッカーじゃないけど、もうちょっと真摯にタレコミしてくれないもんかね
# 「gccって-O3 -ffast-mathつけてビルドして結果が変わったらバグ扱いにしてくれるんだってよ」ってGentoo使いに教えてやりたいね(笑)
Re: (スコア:0)
Fortranは規格違反のコード書いたら鼻から悪魔が出てもいいなんて頭おかしい仕様じゃないから(むしろそんなのはC/C++くらいだろ)。
Re: (スコア:0)
そこまで解析して最適化するなら、もうちょっと先まで解析してよとは思いますね
※昔は無意味なループ削除とかやらなかったのに…ストールマン曰く「プログラマーは無意味なループを書かない」、今回の最適化はここからかけ離れてますね
Re: (スコア:0)
ループは削除してないし
while (1) {
f();
if (p()) break;
g();
}
みたいなコードで毎回1と0を比べて欲しいのかい
Re: (スコア:0)
ループ削除は例です
現実的にwhile(1)じゃないコードをwhile(1)扱いしてるのが問題なわけで
Re: (スコア:1)
規格に則っていない以上、どう解釈されても文句は言えないでしょ。
GCCは、配列a[n]のn番目のアクセスしなくていいよう辻褄を合わせただけ。n番目にアクセスしないならi<nの判定式は必要ない。
プログラマーは、別の方法でループを抜ける方法を実装できるわけだし、実際している場合もある、その場合判定は2つも要らない。。
Re: (スコア:0)
フェイルセーフにしなかったって事ですね
まあ仕様の穴をどうにかしろって事なんでしょうが、穴のない仕様を作るも結構たいへんですし
実装者の趣味・趣向が問われるところですね
プログラマが不正なアクセスしない事を把握した上でコードを簡易化するために配列を「1」オーバーするコードを書く場合もあると思いますが
Re:gccの初物は危なすぎっていうか… (スコア:0)
>プログラマが不正なアクセスしない事を把握した上でコードを簡易化するために配列を「1」オーバーするコードを書く場合もあると思いますが
ありません。というかどうやって把握するのでしょうか?