/Oy (フレーム ポインターの省略)
呼び出し履歴にフレーム ポインターが作成されなくなります。
構文
/Oy[-]
解説
このオプションを使用すると、フレーム ポインターを設定したり削除したりする必要がなくなるため、関数呼び出しが高速化されます。 また、一般使用のためにもう 1 つのレジスタが解放されます。
/Oy を指定するとフレーム ポインターの省略が有効になり、/Oy- を指定すると省略が無効になります。 /Oy と /Oy- は、x64 コンパイラでは使用できません。
コードにフレームベースのアドレス指定が必要な場合は、/Ox オプションの後ろに /Oy- オプションを指定するか、optimize に "y" 引数と off 引数を指定すると、フレームベースのアドレス指定が最大限に最適化されます。 コンパイラでは、フレームベースのアドレス指定が必要な場所を検出します (たとえば、_alloca
関数および setjmp
関数や構造化例外処理が使用されている場合)。
/Ox (ほとんどの速度の最適化を有効にする) オプションや /O1、/O2 (サイズの最小化、速度の最速化) オプションを指定すると、/Oy が暗黙的に指定されます。 /Ox、/O1、または /O2 の各オプションの後に、/Oy- を指定すると、/Oy が、明示的に指定されていても暗黙に指定されていても無効になります。
/Oy コンパイラ オプションを使用すると、コンパイラでフレーム ポインター情報が表示されないため、デバッガーの使用が難しくなります。 デバッグ コンパイラ オプション(/Z7、/Zi、/ZI) を指定した場合は、他の最適化コンパイラ オプションの後に /Oy- オプションを指定することをお勧めします。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[最適化] プロパティ ページを選択します。
[フレーム ポインターなし] プロパティを変更します。 このプロパティを指定すると、/Oy オプションのみが追加または削除されます。 /Oy- オプションを追加する場合は、[コマンド ライン] プロパティ ページを選択し、[追加のオプション] を変更します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。OmitFramePointers