インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
EBP を最適化で汎用レジスターとして使用するかどうかを指定します。
/Oy[-] オプションは IA-32 アーキテクチャーでのみ利用できます。
Linux* および macOS*: | -fomit-frame-pointer -fno-omit-frame-pointer |
Windows*: | /Oy /Oy- |
なし
-fomit-frame-pointer |
EBP を最適化で汎用レジスターとして使用します。Linux* および macOS* システムでは、-O0 オプションまたは -g オプションが指定されている場合、デフォルトは -fno-omit-frame-pointer です。Windows* システムでは、/Od オプションが指定されている場合、デフォルトは /Oy- です。 |
これらのオプションは、EBP を最適化で汎用レジスターとして使用するかどうかを指定します。-fomit-frame-pointer オプションおよび /Oy オプションは、使用を許可します。-fno-omit-frame-pointer オプションおよび /Oy- オプションは、使用を許可しません。
一部のデバッガーは、EBP をスタック・フレーム・ポインターとして使用するため、必要な操作をしない限りスタック・バックトレースを生成できません。-fno-omit-frame-pointer オプションおよび /Oy- オプションは、EBP レジスターをすべての関数のスタック・フレーム・ポインターとして使用するコードを生成するようにコンパイラーに指示します。これにより、デバッガーは、次の操作を行うことなく、スタック・バックトレースを生成できます。
-fno-omit-frame-pointer: -O0 の最適化をオフにする
/Oy-: /O1、/O2、または /O3 の最適化をオフにする
-O0 オプションまたは -g オプションを指定すると、-fno-omit-frame-pointer オプションが設定されます。-O1、-O2、または -O3 オプションを指定すると、-fomit-frame-pointer オプションが設定されます。
/Oy オプションは、/O1、/O2、または /O3 オプションを指定すると設定されます。/Oy- オプションは、/Od オプションを指定すると設定されます。
-fno-omit-frame-pointer または /Oy- オプションを使用すると、利用可能な汎用レジスターが 1 つ減るため、生成するコードの効率が少し低下する場合があります。
Linux*:
現在、gcc 3.2 の例外処理には問題があることが分かっています。このため、C++ 用に gcc 3.2 がインストールされていて、例外処理が有効な場合 (デフォルト)、インテル® コンパイラーはこのオプションを無視します。
Visual Studio*: [Optimization (最適化)] > [Omit Frame Pointers (フレームポインターなし)]
Eclipse*: [Optimization (最適化)] > [Provide Frame Pointer (フレームポインターあり)]
Xcode*: [Optimization (最適化)] > [Provide Frame Pointer (フレームポインターあり)]
Linux* および macOS*: -fp (これは古いオプションです)
Windows*: なし