特定のインライン展開およびループ最適化を選択するには、適切なキーワードを用いて -Qoption を使用します。このオプションを入力する場合は、次の例に示すように、-ip または -ipo を指定しなければなりません:
prompt>icpc -ip -Qoption,tool,opts
tool は C++ (c)で、opts は -Qoption 指示子です (下記参照)。
-Qoption なしで -ip または -ipo を指定すると、コンパイラは次のことを行います:
次の -Qoption 指示子を使用して、プロシージャ間の最適化を設定できます。これを有効にするには、例に示すように、-Qoption オプションとともに -ip または -ipo を入力しなければなりません:
prompt>icpc -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.cpp でプロシージャおよびプロシージャ間の最適化を有効にし、各関数に対して中間言語の文の数の最大増加数を 5 に設定します。
prompt>icpc -ip -Qoption,c,-ip_ninl_max_stats=5 source.cpp