インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

fnsplit、Qfnsplit

関数分割を有効にします。

アーキテクチャーの制限

インテル® グラフィックス・テクノロジーをターゲットとするインテル® 64 アーキテクチャー、または IA-32 アーキテクチャーで実行するインテル® グラフィックス・テクノロジーをターゲットとする場合は利用できません。

構文

Linux*:

-fnsplit[=n]

-no-fnsplit

macOS*:

なし

Windows*:

/Qfnsplit[:n]

/Qfnsplit-

引数

n

関数分割のしきい値を示すオプションで、正の整数を指定します。

ブロックが分岐する確率が n 未満の条件付き分岐からのみ到達できる場合、異なるコードセグメントに配置することができます。分岐の確率は、ヒューリスティックを基にコンパイラーによって計算され、アセンブリー・リストで確認できます。

n の範囲は 0 <= n <= 100 です。

デフォルト

オフ

関数分割を有効にしません。ただし、関数のグループ化は有効です。

説明

このオプションは、関数分割を有効にします。n を指定しないで [Q]fnsplit のみを使用する場合、[Q]prof-use オプションも一緒に指定する必要があります。そうでない場合、オプションは効果がなく、関数分割が行われません。

n を指定すると、関数分割が有効になります。この場合、[Q]prof-use オプションを指定する必要はありません。

[Q]prof-use を使用する場合に関数分割を無効にするには、/Qfnsplit- (Windows*) または -no-fnsplit (Linux*) を指定します。

関数分割は、通常、呼び出されるルーチンのスタックで C/C++ ルーチンに対する例外処理が有効な場合はサポートされません。-fexceptions (Linux*) および C/C++ オプションの /EH (Windows*) も参照してください。

IDE オプション

Visual Studio*: [Code Generation (コード生成)] > [Disable Function Splittin (関数分割を無効にする)]

Eclipse*: なし

Xcode*: なし

代替オプション

Linux*: -freorder-blocks-and-partition (gcc オプション)

Windows*: なし