Subject | : Re^2: ad clusterのインテルマックでのコンパイルオプションについて |
Date | : 2008/01/21(Mon) 20:53:51 |
Contributor | : Akio Morita |
URL | : http://acc-physics.kek.jp/SAD/SADrelease/distfiles/oldsad-1.0.10.2.2b.tar.gz |
hsrchz.oが妖しいなら、-O1/-O2での挙動の違いを調べれば良いはずなのですが
その辺の調査結果が上がっていないようなので調べました
amsad8のgcc-4.2.0では
hsrchz() @ src/hsrch.f内の hsrchz = mod(abs(isum), HTMAX)+1の結果が
-O1 と -O2で違います
例えば、 -O1 / -O2
$DUMMYLINE -> 10652 / -10650
(このときは、isum < 0でした)
さらに、
o 直前で、mod()を作用させる前の isumを writeすると挙動が変わる(-O2時)
o amsad9のgcc-4.2.1で makeすると -O2でも問題は出ません
ということなので、isum = INT_MINでは無いようなので、abs()が効いてないのか
大数に対するmod()が負になっているのか分りませんが、最適化オプションの
実装に関するコンパイラーのバグだと思われます