EBP を最適化で汎用レジスターとして使用するかどうかを指定します。
Windows: [Optimization (最適化)] > [Omit Frame Pointers (フレームポインターなし)]
Linux: [Optimization (最適化)] > [Provide Frame Pointer (フレームポインターあり)]
Mac OS X: [Optimization (最適化)] > [Provide Frame Pointer (フレームポインターあり)]
-f[no-]omit-frame-pointer: IA-32 およびインテル(R) 64 アーキテクチャー
/Oy[-]: IA-32 アーキテクチャー
Linux* および Mac OS* X: | -fomit-frame-pointer -fno-omit-frame-pointer |
Windows*: | /Oy /Oy- |
なし
Linux および Mac OS X: -fomit-frame-pointer Windows: /Oy |
EBP を最適化で汎用レジスターとして使用します。Linux および Mac OS X システムでは、-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 つ減るため、生成するコードの効率が少し低下する場合があります。
現在、GCC 3.2 の例外処理には問題があることがわかっています。このため、C++ 用に GCC 3.2 がインストールされていて、例外処理が有効な場合 (デフォルト)、インテル(R) コンパイラーはこのオプションを無視します。
Linux および Mac OS X: -fp (これは古いオプションです)
Windows: なし