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