Sun Studio 12 Update 1: Fortran ユーザーズガイド

3.4.140 –xlinkopt[={ 1|2|0}]

(SPARC) 再配置可能なオブジェクトファイルのリンク時の最適化を実行します。

ポストオプティマイザは、リンク時にバイナリオブジェクトコードに対して高度なパフォーマンス最適化を多数実行します。オプションの値には、実行する最適化のレベルを 0、1、2 のいずれかで設定します。

0

ポストオプティマイザは無効です。これがデフォルトです。 

1

リンク時の命令キャッシュカラーリングと分岐の最適化を含む、制御フロー解析に基づき最適化を実行します。 

2

リンク時のデッドコードの除去とアドレス演算の簡素化を含む、追加のデータフロー解析を実行します。 

値なしで -xlinkopt フラグを指定すると、-xlinkopt=1 とみなされます。

このような最適化は、リンク時にオブジェクトのバイナリコードを解析することによって実行されます。オブジェクトファイルは書き換えられませんが、最適化された実行可能コードは元のオブジェクトコードとは異なる場合があります。

このオプションは、プログラム全体をコンパイルし、実行時プロファイルフィードバックとともに使用されるともっとも効果的です。

コンパイルとリンクを個別に実行する場合、-xlinkopt はコンパイルとリンクの両方で指定する必要があります。


demo% f95 -c -xlinkopt a.f95 b.f95
demo% f95 -o myprog -xlinkopt=2 a.o b.o

レベルパラメータは、コンパイラのリンク時にだけ使用されます。前述の例では、オブジェクトバイナリが暗黙的に指定された 1 のレベルでコンパイルされていても、使用される最適化後のレベルは 2 です。

リンク時のポストオプティマイザは、インクリメンタルリンカー ild とともに使用することはできません。-xlinkopt フラグは、デフォルトリンカーを ld に設定します。-xildon フラグを使用してインクリメンタルリンカーを明示的に有効にしたときに -xlinkopt オプションも指定していると、-xlinkopt オプションは無効になります。

-xlinkopt オプションを有効にするには、プログラム内のルーチンの少なくとも一部は、このオプションを指定してコンパイルする必要があります。-xlinkopt を指定しないでコンパイルされたオブジェクトバイナリについても、オプティマイザは限定的な最適化を実行できます。

-xlinkopt オプションは、コンパイラのコマンド行にある静的ライブラリのコードは最適化しますが、コマンド行にある共有 (動的) ライブラリのコードは最適化しません。共有ライブラリを構築 (-G でコンパイル) する場合は、-xlinkopt も使用できます。

リンク時のポストオプティマイザは、実行時のプロファイルフィードバックとともに使用するのがもっとも効果的です。プロファイリングによって、コードでもっともよく使用される部分ともっとも使用されない部分が明らかになるので、オプティマイザはそれに基づき処理を集中するよう指示されます。これは、リンク時に実行されるコードの最適な配置が命令のキャッシュミスを低減できるような、大きなアプリケーションにとって特に重要です。このようなコンパイルの例を次に示します。


demo% f95 -o progt -xO5 -xprofile=collect:prog file.f95
demo% progt
demo% f95 -o prog -xO5 -xprofile=use:prog -xlinkopt file.95

プロファイルフィードバックの使用方法の詳細は、-xprofile オプションを参照してください。

このオプションを指定してコンパイルすると、リンク時間がわずかに増えます。オブジェクトファイルも大きくなりますが、実行可能ファイルのサイズは変わりません。-xlinkopt フラグと -g フラグを指定してコンパイルすると、デバッグ情報が取り込まれるため、実行可能ファイルのサイズが増えます。