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

fomit-frame-pointer、Oy

EBP を最適化で汎用レジスターとして使用するかどうかを指定します。

アーキテクチャーの制限

/Oy[-] オプションは IA-32 アーキテクチャーでのみ利用できます。

構文

Linux* および macOS*:

-fomit-frame-pointer

-fno-omit-frame-pointer

Windows*:

/Oy

/Oy-

引数

なし

デフォルト

-fomit-frame-pointer
または /Oy

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 レジスターをすべての関数のスタック・フレーム・ポインターとして使用するコードを生成するようにコンパイラーに指示します。これにより、デバッガーは、次の操作を行うことなく、スタック・バックトレースを生成できます。

-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 がインストールされていて、例外処理が有効な場合 (デフォルト)、インテル® コンパイラーはこのオプションを無視します。

IDE オプション

Visual Studio*: [Optimization (最適化)] > [Omit Frame Pointers (フレームポインターなし)]

Eclipse*: [Optimization (最適化)] > [Provide Frame Pointer (フレームポインターあり)]

Xcode*: [Optimization (最適化)] > [Provide Frame Pointer (フレームポインターあり)]

代替オプション

Linux* および macOS*: -fp (これは古いオプションです)

Windows*: なし

関連情報