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

IPO コンパイルは、コンパイルフェーズとリンクフェーズの 2 つに分けて行われます。

コンパイルフェーズでは、コンパイラーはユーザーコードの中間言語 (IL) バージョンを生成します。リンクフェーズでは、コンパイラーは IL を読み込んでコンパイルを完了し、実際のオブジェクト・ファイルまたは実行ファイルを生成します。

一般に、コンパイラーのバージョンが異なると、異なる定義に基づいて IL が生成されるため、異なるコンパイルによる IL は互換がない場合があります。

コンパイラーは各コンパイラーの IL 定義に独自のバージョン番号を割り当てます。コンパイラーがバージョン番号が異なるファイルの IL を読み込もうとすると、コンパイルは続行されますが、IL は破棄され、コンパイルでは使用されません。その際、コンパイラーは、検出および破棄された非互換の IL に関する警告メッセージを表示します。

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

インテル(R) コンパイラーが生成した IL はオブジェクト・ファイルの特別なセクションに格納されます。その後、オブジェクト・ファイルに格納された IL はライブラリーに配置されます。このライブラリーがライブラリーに配置された IL を生成した同じコンパイラーで起動されて IPO コンパイルに使用された場合、コンパイラーはライブラリーから IL を抽出してプログラムの最適化に使用することができます。例えば、ライブラリーで定義されている関数を、ユーザーのソースコードにインライン展開することができます。