-ip と -Qoption 指定子の使用

インテル® C++ コンパイラの最適化を、メモリの最適化とプロシージャ間の最適化を試すことにより、特定のアプリケーション向けに調整することができます。特定のインライン展開およびループ最適化を選択するには、適切なキーワードを用いて -Qoption オプションを入力します。このオプションを入力する場合は、次の例に示すように、-ip または -ipo を指定しなければなりません:

-ip[-Qoption,tool,opts]

tool は C++ (c)で、opts-Qoption 指定子です (下記参照)。指定子がコンパイラのヒューリスティックにいかに影響を与えるかについては、「関数のインライン展開の条件」を参照してください。

-Qoption 指定子

-Qoption なしで -ip または -ipo を指定すると、コンパイラは次のことを行います:

次の -Qoption 指定子を使用して、プロシージャ間の最適化を設定できます。これを有効にするには、例に示すように、-Qoption オプションとともに -ip または -ipo を入力しなければなりません:

-ip -Qoption,f,ip_specifier

ip_specifier は次の表で説明される -Qoption 指定子のいずれかです:

-Qoption 指定子 説明
-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 のデフォルト値は次のとおりです:
IA-32 compiler: ip_ninl_min_stats = 7
Itanium® compiler: ip_ninl_min_stats = 15
-ip_ninl_max_total_stats=n インライン化のために、中間言語文で、関数のサイズに展開できる最大数を設定します。n は正の整数です。n のデフォルト値は 2000 です。

次のコマンドは source.cpp でプロシージャおよびプロシージャ間の最適化を有効にし、各関数に対して中間言語の文の数の最大増加数を 5 に設定します。

prompt>icpc -ip -Qoption,c,-ip_ninl_max_stats=5 source.cpp