2007年 10月 09日 火曜日 Sun Studio 12, cc, -fast オプション
一年ほど前に、Sun Studio 11 の -fast オプションについてのトピックを書いたので、今回は Sun Studio 12 について、同様の内容を見てみたいと思います。
SPARC 版の C コンパイラでは -fast に関する更新はありません。Sun Studio 12 と Sun Studio 11 では同じオプションに展開されます。具体的にどのオプションに展開されるのかについては、以下のオプション等で確認できます
$ cc -c -fast myprog.c -###
x86 版の C コンパイラでは -fast に変更が加えられています。Sun Studio 12 では、-xregs=frameptr が指定されるようになりました。-fast は以下のオプションに展開されます (Solaris, と Linux で同じオプションに展開されます)。
-fns -nofstore -fsimple=2 -fsingle -xalias_level=basic -xbuiltin=%all -xdepend -xlibmil -xlibmopt -xO5 -xregs=frameptr -xtarget=native
もし、Sun Studio 11 で -fast を指定してコンパイルしてみたものを Sun Studio 12 で同様に -fast を指定すると、-xregs=frameptr 付きでコンパイルされるか否かの違いが生じます。
-xregs=frameptr
このオプションは x86 アーキテクチャのフレームポインタレジスタを汎用レジスタとして扱うように指定します。そうすることでパフォーマンスが向上することがある、とマニュアルに書いてあり、実例は思いつかないですが使えるレジスタが増えるわけですから、パフォーマンスを向上させる方向に働くというのはに納得はできます。汎用レジスタとして使用することによってフレームのアドレスが保持されなくなるので、DTrace やパフォーマンスアナライザ等のスタックを調べてプログラムの動作を追跡するツールの動作に悪影響を及ぼすというマニュアルの説明についても、その通りなのでしょう ... 実際にこのプログラムではこうだった、と報告できるのが一番良いのですが、想像になってしまうのがつらいところです。何か試して報告できるか、やってみます。
Posted by keiichio
( 10月 09日 2007年, 06:59:07 午後 JST )
Permalink
投稿されたコメント [0]