特定のインライン展開およびループ最適化を選択するには、適切なキーワードを用いて -Qoption を使用します。このオプションを入力する場合は、次の例に示すように、-ip または -ipo を指定しなければなりません。
prompt>icc -ip -Qoption,tool,opts
toolはC++ (c)で、optsは-Qoption 指示子です(下記参照)。
-Qoption修飾なしで-ipoまたは-ipoを指定すると、コンパイラは次のことを行います。
次の-Qoption指示子を使用して、プロシージャ間の最適化を設定できます。これを有効にするには、例に示すように、-Qoption オプションは-ipまたは-ipoも同時に入力しなければなりません。
prompt>icc -ip -Qoption,c,ip_specifier
ip_specifierは次の表で説明される指定子のいずれかです。
指示子 | 説明 |
---|---|
-ip_args_in_regs=0 |
レジスタ内での引数の受け渡しを無効にするオプションです。デフォルトでは、ローカルに呼び出された外部関数はレジスタ内で引数の受け渡しができます。通常、スタティック関数のみはレジスタ内での引数の受け渡しができますが、それには条件が2つあり、1つはその関数のアドレスが取得されないこと、もう1つは個数の定まらない引数をその関数が使用しないことです。 |
-ip_ninl_max_stats=n | インライン展開する関数1個について、中間言語の文を最大何個まで許容させるかを設定するオプションです。n は正の整数です。通常は、中間言語の文の個数は、ソース言語の文の実際の個数を超えます。 n のデフォルト値は「230」です。コンパイラは、ユーザのインライン関数用に、制限をより大きくします。 |
-ip_ninl_min_stats=n | インライン展開する関数1個について、中間言語の文を最小何個まで許容させるかを設定するオプションです。n は正の整数です。ip_ninl_min_statsのデフォルト値:
|
-ip_ninl_max_total_stats=n | インライン化のために、中間言語文で、関数のサイズに展開できる最大数を設定します。 n はデフォルト値2000の正の整数です。 |
次のコマンドは、source.cにおいてプロシージャおよびプロシージャ間の最適化をアクティブにし、各関数について中間言語文の最大数を5に設定します。
prompt>icc -ip -Qoption,c,-ip_ninl_max_stats=5 source.c