実際のオブジェクト・ファイルの生成

状況によっては、-ipo を使用して実際のオブジェクト・ファイルを生成する必要があります。IPO を行う場合、擬似オブジェクト・ファイルではなく実際のオブジェクト・ファイルを強制的に生成するために、ipo_obj オプションと -ipo オプションを組み合わせて使用します。

次の場合は、-ipo_obj を使用する必要があります:

バージョン番号による IL ファイルの管理

IPO コンパイルは、コンパイル・フェーズとリンクフェーズの 2 つに分けて行われます。コンパイル・フェーズでは、コンパイラは中間言語 (IL) バージョンのコードを含むファイルを生成します。リンクフェーズでは、コンパイラは IL を読み込んでコンパイルを完了し、実際のオブジェクト・ファイルまたは実行ファイルを生成します。

一般に、コンパイラのバージョンが異なると、異なる定義に基づいて IL が生成されるため、IL は互換がない場合があります。インテル® C++ コンパイラは各コンパイラの IL 定義に独自のバージョン番号を割り当てます。コンパイラがバージョン番号が異なるファイルの IL を読み込もうとすると、コンパイルは続行されますが、IL は破棄され、コンパイルでは使用されません。その際、コンパイラは非互換の IL に関する警告を表示します。

オブジェクトとライブラリ中の IL: さらなる最適化

インテル・コンパイラが生成した IL はオブジェクト・ファイルの特別なセクションに格納されます。その後、オブジェクト・ファイルに格納された IL はライブラリに配置されます。このライブラリが、その IL を生成したものと同じコンパイラで起動されて IPO コンパイルに使用された場合、コンパイラはライブラリから IL を抽出してプログラムの最適化に使用することができます。