/GL (全程序优化)

启用全程序优化。

语法

/GL[-]

备注

整个程序优化允许编译器使用程序中所有模块的信息执行优化。 如果不进行全程序优化,将基于每个模块执行优化 (编译) 操作。

默认情况下,整个程序优化是关闭的,必须显式启用。 但是,也可使用 显式禁用它 /GL-

借助有关所有模块的信息,编译器可以:

  • 优化跨函数边界的寄存器使用。

  • 更好地跟踪对全局数据的修改,从而减少负载和存储的数量。

  • 跟踪指针取消引用修改的可能项集,从而减少所需的负载和存储。

  • 在模块中内联函数,即使该函数在另一个模块中定义。

.obj 链接器实用工具(如 和 )无法使用使用 生成的 /GL EDITBIN 文件 DUMPBIN

如果使用 和 编译程序 /GL /c ,则应当使用 /LTCG 链接器选项创建输出文件。

/ZI 不能与 /GL

当前版本中使用 生成的文件格式通常无法由更高版本的 Visual Studio 和 MSVC /GL 工具集读取。 除非愿意为 Visual Studio 的所有版本提供文件副本Visual Studio否则现在和将来,请不要提供由 生成的文件所生成的 .lib .lib .obj 文件 /GL 。 有关详细信息,请参阅 二进制兼容性限制

.obj 不应使用 和预编译头文件生成的文件来生成文件,除非该文件与生成该文件的同一计算机上 /GL .lib .lib /GL .obj 链接。 链接 .obj 时需要文件预编译头文件中的信息。

有关 随 提供的优化以及整个程序优化的限制,请参阅 /LTCG/GL 还使配置文件引导式优化可用。 为配置文件引导式优化进行编译时,如果要从配置文件引导式优化中对函数排序,必须使用 或隐含 /Gy /Gy 的编译器选项进行编译。

在 Visual Studio 开发环境中设置此链接器选项

若要详细了解如何在开发环境中指定 ,请参阅 (/GL /LTCG 链接时代码) 。

以编程方式设置此链接器选项

另请参阅

MSVC编译器选项
MSVC编译器命令行语法