/GL (プログラム全体の最適化)

プログラム全体の最適化を有効にします。

構文

$

解説

プログラム全体の最適化を指定すると、コンパイラはプログラム内のすべてのモジュールに関する情報を使用して最適化を実行できます。 プログラム全体の最適化を指定しないと、最適化はモジュール (コンパイル単位) ごとに実行されます。

プログラム全体の最適化は既定ではオフであり、明示的に有効にする必要があります。 ただし、/GL- を使用して明示的に無効にすることもできます。

すべてのモジュールに関する情報を使用すると、コンパイラは次のことができます。

  • 関数の境界を越えてレジスタの使用を最適化します。

  • グローバル データに対する変更の追跡をいっそううまく行って、読み込みと格納の数を減らすことができます。

  • ポインター逆参照によって変更される可能性がある項目のセットを追跡し、必要な読み込みと格納を減らします。

  • 関数が別のモジュールで定義されている場合でも、モジュール内の関数をインライン化します。

/GL で生成される .obj ファイルは、EDITBINDUMPBIN などのリンカー ユーティリティでは使用できません。

/GL/c を使ってプログラムをコンパイルする場合は、/LTCG リンカー オプションを使って出力ファイルを作成する必要があります。

/ZI/GL では使用できません

現在のバージョンの /GL で生成されるファイルの形式は、多くの場合、新しいバージョンの Visual Studio や MSVC ツールセットでは読み取ることができません。 ユーザーが使用すると予想される Visual Studio のすべてのバージョン用に .lib ファイルのコピーを提供したいのでない限り、現在も将来も、/GL によって生成された .obj ファイルで構成される .lib ファイルを提供しないでください。 詳しくは、「バイナリ互換性に関する制限事項」をご覧ください。

/GL およびプリコンパイル済みヘッダー ファイルによって生成された .obj ファイルは、/GL.obj ファイルを生成したのと同じコンピューターで .lib ファイルがリンクされるのでない限り、.lib ファイルをビルドするために使用しないでください。 .obj ファイルのプリコンパイル済みヘッダー ファイルからの情報は、リンク時に必要です。

プログラム全体の最適化で使用できる最適化と、その制限事項について詳しくは、/LTCG に関する記事をご覧ください。 /GL では、ガイド付き最適化のプロファイルも使用できます。 ガイド付き最適化のプロファイル用にコンパイルするとき、ガイド付き最適化のプロファイルからの関数の順序を使用する場合は、/Gy を使用するか、または /Gy を意味するコンパイラ オプションを使用して、コンパイルする必要があります。

Visual Studio 開発環境でこのリンカー オプションを設定するには

開発環境で /GL を指定する方法について詳しくは、「/LTCG (リンク時のコード生成)」をご覧ください。

このリンカーをコードから設定するには

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文