こんにちは、鶴谷です。

いつの頃からか、/usr/share/mk/sys.mkで、

CFLAGS         ?=      -O2 -fno-strict-aliasing -pipe

となっています。
確か、かなり昔(3.Xの頃だったか)に、
システムの構築時には -O2 以上の最適化は保障されていないので指定してはいけない、
と聞いた気がするのですが、もう今では大丈夫、ということでしょうか。
CVSリポジトリを見る限り、Rev.1.81でこの変更が行われた際、
その理由を説明しているようなコメントはありませんでした。
この変更は、RELENG_6への分岐が出来る前に行われていますが、
RELENG_6の時点で -O1 に戻す予定だったとかではないですよね。

なお、昨日
 [FreeBSD-users-jp 89926] FreeBSD/amd64 で出力がおかしい
で報告したトラブルは、lib32を作る際に -O2 をつけなければ、
起こりませんでした。
単純に__dtoa()を使うだけでも起こりますが、そのコードをsrc/contrib/gdtoa/dtoa.cと
同時にコンパイルしただけでは問題なかったので、make world時との引数の違いを
調べた結果から -O2 をつけなければ大丈夫なことを確認しました。
私のところだけかどうかが気になっていますので、amd64上で是非同じ症状があれば/なければ
教えていただければと思います。
なお、いまのところ、この現象になるのは、double値が0x3fb999999999999(≒0.1)の時だけです。
普通に0.1を表すと0x3fb999999999999aとなるらしいので、端数処理が
特殊な状況なのかもしれません。0.0:0というのも、0.0"10"0のような感じですし...

-- 
[EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

メールによる返信