こんにちは、鶴谷です。 いつの頃からか、/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]