/Oy (フレーム ポインタの省略)
更新 : 2007 年 11 月
呼び出し履歴にフレーム ポインタが作成されなくなります。
/Oy[-]
解説
このオプションを使用すると、フレーム ポインタを設定したり削除したりする必要がなくなるため、関数呼び出しが高速化されます。また、レジスタ (Intel 386 以降では EBP) をもう 1 つ解放して、頻繁に使用される変数と部分式を格納します。
/Oy ではフレーム ポインタの省略が有効になり、/Oy- では省略が無効になります。/Oy は、x86 コンパイラでのみ使用できます。
コードに EBP ベースのアドレス指定が必要な場合は、/Ox オプションの後ろに /Oy– オプションを指定するか、optimize に "y" 引数と off 引数を指定すると、EBP ベースのアドレス指定に最大限の最適化が得られます。コンパイラは、EBP ベースのアドレス指定が必要な場所を検出します。たとえば、_alloca 関数および setjmp 関数や構造化例外処理が使われている場合にアドレス指定が必要です。
/Ox (最大限の最適化) (最大限の最適化) オプションおよび/O1、/O2 (プログラム サイズ、実行速度) (実行速度) オプションを使用すると、/Oy が暗黙で指定されます。/Ox、/O1、または /O2 の各オプションの後に、/Oy– を指定すると、/Oy が、明示的に使用されていても暗黙に使用されていても無効になります。
/Oy コンパイラ オプションを使用すると、コンパイラでフレーム ポインタ情報が表示されないため、デバッガの使用が難しくなります。デバッグ コンパイラ オプション (/Z7、/Zi、/ZI) を指定した場合は、他の最適化コンパイラ オプションの後に /Oy- オプションを指定することをお勧めします。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダをクリックします。
[最適化] プロパティ ページをクリックします。
[フレーム ポインタなし] プロパティを変更します。このプロパティは、/Oy オプションのみ追加または削除します。/Oy- オプションを追加する場合は、[コマンド ライン] をクリックし、[追加のオプション] を変更します。
このコンパイラ オプションをコードから設定するには
- OmitFramePointers を参照してください。