多くの場合、IPO はリンク時のコンパイルで 1 つのオブジェクト・ファイルを生成します。これは、非常に大きいアプリケーションでは効率が悪く、最悪の場合、アプリケーションで -ipo を使用できないこともあります。この問題を回避するには、次の 2 つの方法のいずれかを行います。1 つめの方法は、サイズベースのヒューリスティックです。このヒューリスティックでは、大きいアプリケーションのリンク時のコンパイルにおいて複数のオブジェクト・ファイルを自動生成します。 2 つ目の方法は、明示的なコマンドライン・コントロールを 1 つまたは 2 つ使用して、マルチオブジェクト IPO を処理するようコンパイラに指示します。
-ipoN: N は生成するオブジェクト・ファイルの数です。
-ipo_separate: 各ソースファイルに対して個別の IPO オブジェクト・ファイルを作成するようコンパイラに指示します。
これらのオプションは、-ipo オプションの代わりとして使用されます。マルチオブジェクト IPO コンパイルを明示的に指示すると、サイズベースのヒューリスティックはオフになります。
リンク時のコンパイルで生成されるファイルの数は、-ipo_c または -ipo_S オプションが使用されていない限り表示されません。 この場合、コンパイラは番号をファイル名に追加します。 例えば、次のコマンドラインを考えてみます。
ifort a.o b.o c.o -ipo_separate -ipo_c
このコマンドラインで、a.o、b.o、および c.o にはすべて IR が含まれているため、コンパイラは ipo_out.o、ipo_out1.o、ipo_out2.o、および ipo_out3.o を生成します。
最初のオブジェクト・ファイルには、グローバル・シンボルが含まれています。 その他のオブジェクト・ファイルは、ソースファイルに対応しています。
また、命名規則にはユーザ指定の名前が適用されます。 例:
ifort a.o b.o c.o -ipo_separate -ipo_c -o appl.o
コンパイラは、appl.o、appl1.o、appl2.o、および appl3.o を生成します。