fp、Oy

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

IDE オプション

Windows: [C/C++] > [Optimization (最適化)] > [Omit Frame Pointers (フレームポインターなし)]

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

Mac OS: [Optimization (最適化)] > [Provide Frame Pointers (フレームポインターあり)]

アーキテクチャー

-fp: IA-32、インテル(R) EM64T

/Oy[-]: IA-32

構文

Linux* および Mac OS*: -fp
Windows*:  /Oy
/Oy-

引数

なし

デフォルト

Linux および Mac OS: オフ
Windows: オン
Windows システムでは、EBP を最適化で汎用レジスターとして使用します。Linux および Mac OS システムでは、EBP を最適化で汎用レジスターとして使用しません。

説明

-fp オプションは、/Oy オプションとは逆に、EBP レジスターを最適化で汎用レジスターとして使用しないようにします。

一部のデバッガーは、EBP をスタック・フレーム・ポインターとして使用するため、必要な操作をしない限りスタック・バックトレースを生成できません。-fp および /Oy- オプションは、EBP レジスターを最適化で使用しないようにして、EBP レジスターをすべての関数のスタック・フレーム・ポインターとして使用するコードを生成するようにコンパイラーに指示します。これにより、デバッガーは、次の操作を行うことなく、スタック・バックフレームをそのまま生成できます。

-fp オプションは、-O0 オプションを指定すると設定されます。IA-32 システムおよびインテル(R) エクステンデッド・メモリー 64 テクノロジー (インテル(R) EM64T) 対応システムでは、-g オプションを指定した場合にも設定されます。-O1-O2、または -O3 オプションを指定すると、-fp はオフになります。

/Oy オプションは、/O1/O2、または /O3 オプションを指定すると設定されます。/Od オプションを指定すると、/Oy はオフになります。

-fp または /Oy オプションを使用すると、利用可能な汎用レジスターが 1 つ減るため、生成するコードの効率が少し低下する場合があります。

代替オプション

Linux および Mac OS: -fno-omit-frame-pointer
Windows: なし