インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド

IPO の使用

このトピックでは、コマンドラインから IPO を使用する方法を説明します。

IPO を使用したコンパイルとリンク

サポートされるすべてのインテル® アーキテクチャーを対象にしたコンパイルとも、IPO を有効にするステップは同じで、コンパイル段階とリンク段階があります。

まず、-ipo (Linux* および OS X*) または /Qipo (Windows*) を指定してソースファイルを次のようにコンパイルします。

オペレーティング・システム

コマンド例

Linux* および OS X*

icpc -ipo -c a.cpp b.cpp c.cpp

Windows*

icl /Qipo /c a.cpp b.cpp c.cpp

上記のコマンド例では、オペレーティング・システムによって出力が異なります。

-c (Linux* および OS X*) または /c (Windows*) を使用して .o ファイルまたは .obj ファイルを作成した後でコンパイルを停止します。出力ファイルには、コンパイルされたソースファイルに対応するインテル® コンパイラーの中間表現 (IR) が含まれます。(次の 「IPO の中間出力の取得」を参照してください。)

次に、結果ファイルをリンクします。次のコマンド例では、app という名前の実行ファイルが生成されます。

オペレーティング・システム

コマンド例

Linux* および OS X*

icpc -o app a.o b.o c.o

Windows*

icl /Feapp a.obj b.obj c.obj

このコマンドは、IR を含むオブジェクトに対してコンパイラーを実行して、リンクされるオブジェクトの新しい一覧を生成します。また、xild (Linux* および OS X*) ツールまたは xilink (Windows*) ツールを適切なリンクオプションとともに使用できます。

ステップの組み合わせ

上記の例で使用した複数のコマンドを組み合わせて、1 つのコマンドにすることができます。

オペレーティング・システム

コマンド例

Linux* および OS X*

icpc -ipo -o app a.cpp b.cpp c.cpp

Windows*

icl /Qipo /Feapp a.cpp b.cpp c.cpp

上記の例のように、icl/icpc コマンドは指定されたオブジェクト・ファイルにリンクする GCC ld (Linux* および OS X*) または Microsoft* link.exe (Windows* のみ) を呼び出し、-o (Linux* および OS X*) または /Fe (Windows*) で指定された実行ファイルを生成します。

Linux* および OS X*: icpc を使用すると、コンパイラーは標準 C++ ライブラリーを自動で使用することができます。icc を指定した場合は、標準 C++ ライブラリーを自動では使用できません。

インテルのリンクツールは、-O0 (Linux* および OS X*) と /Od (Windows*) でのコンパイル動作をエミュレートします。

複数ファイル IPO は中間表現 (IR) を含むソースファイルにだけ適用され、IR を含まないオブジェクト・ファイルはリンク段階に渡されます。

IPO の中間出力の取得

-ipo-c (Linux* および OS X*) または /Qipo-c (Windows*) と -ipo-S (Linux* および OS X*) または /Qipo-S (Windows*) は、複数ファイル IPO の効果を分析したり、あるいは、プログラムを完全には構成しないモジュール間で複数ファイル IPO を検証するのに役立ちます。

どちらのオプションでも、-o (Linux* および OS X*) または /Fe (Windows*) を使用して、別のファイル名を指定できます。

マルチオブジェクト IPO を使用した場合、これらのオプションは、複数の出力を生成します。ビルドプログラムまたはダイナミック・リンク・ライブラリーの名前を指定します。-o (Linux* および OS X*) または /Fe (Windows*) オプションで指定されるファイル名から取得します。

後続のファイルの名前は、最初のファイルの名前から派生して取得され、ファイル名に数値が追加されます。例えば、最初のオブジェクト・ファイルの名前が foo.o (Linux* および OS X*) または foo.obj (Windows*) の場合、次のオブジェクト・ファイルの名前は foo1.o または foo1.obj となります。

-ipo-c (Linux* および OS X*) オプションまたは /Qipo-c (Windows*) オプションで生成されたオブジェクト・ファイルを使用できますが、プログラム全体の条件が満たされた場合と同じ最適化の効果はありません。

IPO で通常生成される擬似ファイルとは異なり、-ipo-c オプションを使用して作成されるファイルは、実際のオブジェクト・ファイルです。ただし、生成されたオブジェクト・ファイルは擬似オブジェクト・ファイルとは大幅に異なります。このファイルには、IPO を使用してアプリケーションを十分に最適化するのに必要な IR 情報が含まれていません。

コンパイラーは、生成される各オブジェクトまたはアセンブリー・ファイルの名前を示すメッセージを表示します。これらのファイルは、実際のリンク段階で追加することで、最終的なアプリケーションをビルドすることができます。

-auto-ilp32 (Linux*) または /Qauto-ilp32 (Windows*) オプションの使用

インテル® 64 アーキテクチャー・ベースの Linux* システムでは、-auto-ilp32 オプションは -x オプションで SSE3 またはそれ以上を指定しない限り、効果がありません。


このヘルプトピックについてのフィードバックを送信