木村です.

> 小野さん [FreeBSD-users-jp 91681] Re: long double の bug ? について 
>  結論から言えば、i386システム用のgccにおけるコン 
> パイルオプションなのではないでしょうか。
  済みません.書き忘れていました.i386 での話です.
-m96bit-long-double, -m128bit-long-double は確かに i386 用の option
ですが,私が問題にしているのは,少なくとも FreeBSD 6.2 にて,
この option の差異によって,計算結果に本来生じるべきでない差異が
現われることと,それが実行時でなくコンパイルの段階で生じていること
です.

> 1) MacOSXネイティヴな環境 (OSX 10.5.2)

> % gcc --version
> i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5465)

> 2) FreeBSD/amd64 on VMWare Fusion

> % gcc -v
> Using built-in specs.
> Confugured with: FreeBSD/amd64 system compiler
> Thread model: posix
> gcc version 3.4.6 [FreeBSD] 20060305

  ちゃんと i386 と書かなかったのでお手間をとらせて申し訳
ありませんでした.お試しいただいた二つの環境では,この問題
は生じていないのですね.小野さんの Mac の結果を参考に,明日
(もう今日) gcc version 4 も試してみます.

  ところで,本題からはずれますが,
> .LCFI1:
>       movabsq $4614256656552045848, %rax
>       movq    %rax, -8(%rbp)
>       movabsq $-2958705157555305931, %rax
movabsq されている二つの行はどちらも変数 lc の仮数部なのでしょうか?
amd64 の sizeof(long double) っていくつなのでしょうか?

                     Satoshi Kimura  
([メールアドレス保護])

メールによる返信