もきもき3D

アクセスカウンタ

zoom RSS 最適化オンルベツ

<<   作成日時 : 2009/09/13 18:39   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 LW9.xで問題無いPivotRotHelperがLW75/85で即死するようになってた。
 msgFuncで何処で落ちてるのか確認するも、落ちてる所に怪しいところは無し。
 Dr.Watsonのログを見るとUSER32との絡みでframe云々と書いて有るけど意味わかんねぇ(;・з・)

if(LW9) foo(c);
else bar(c);
func(a,b,c);

func(a, b, c){ // 実際は配列でポインタだけど省略
x1,x2, y, z;
y = -b;
func2(x1, y);
z = -c;
func2(x2, z);
func3(x1, x2);
func4(x1, a);
}
 てな流れなんだけど、y=やz=の前にmsgFuncを仕込んでると落ちない。
 y=の前だけだと落ちるけど、z=前だけだと落ちない。

 ワトソン先生がframe云々言ってたからと、-fomit-frame-pointerを削ってみるも変化なし。

 幸い、b,cは書き換えて構わない要素だったからy=,z=の変わりにb=,c=としたら落ちなくなった。

 以前に「ちょっと違う内容での繰り返し動作」の最適化でおかしくなるのを体験してたし、最適化を切ってみたら案の定正常動作するようになった。
 if(LW9)を通った時のみ問題が出ないコンパイルがされるようになってたっぽい(;;・з・)

 2箇所から呼ばれる関数だけど、msgFuncが無い時はベタに展開した方が良いと判断されて親関数に取り込みはしたけどスタック操作が変で死亡。とかだったのかねぇ。

 まぁ、なんの事はない、いや〜んまいっちんぐだったとさ、というお話し。

----
 MinGW GCC -O2に関数のインライン展開は含まれてなかった(;;・з・)
 -O3にして展開するようにしたら上記の問題は出なくなった。
 むぅ(;;・з・)何故だ。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
最適化オンルベツ もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる