突然ですが引っ越すことになりました
諸般の事情で社員寮に引っ越すことになりました。
この前更新費を払ったばっかりなのに・・・痛いな。
なによりも、当分の間週末は引越し準備になってしまいそうなのが、いやん。
radix sortがgcc 4.xでsegmentation faultする件
id:toge:20060727#1154020692
7/27に嵌ってたことの原因が判明。まあ、あれだ、変なことするなら"-Wall"はつけろってことだ。
warning: dereferencing type-punned pointer will break strict-aliasing rules
というwarningが出てたのね。さて"strict-aliasing"は"-O2"で有効になる"-fstrict-aliasing"のこと。
ということで、このwarningが出ているオブジェクトだけ"-fno-strict-aliasing"を指定すると・・・、gcc 4.x系でも問題なくなりました。
以下の参考資料によると、gcc 3.xで動いていたのもたまたまだったみたいだ。危い危い。
"strict aliasing rule"(http://www.radiumsoftware.com/0304.html)
"type punning と strict aliasing"(id:yupo5656:20040614:p1)
ちなみに、共用体を使えばwarningは無くなりましたが、segmentation faultすることに変わりはなかったです。
しかし"-fstrict-aliasing"なqsortと"-fno-strict-aliasing"なradix sortはどっちが速いんだろうなぁ。