Share via


/GL (Optimización completa del programa)

Habilita la optimización completa del programa.

Sintaxis

/GL[-]

Comentarios

La optimización completa del programa permite al compilador realizar optimizaciones con información de todos los módulos del programa. Sin la optimización completa del programa, las optimizaciones se realizan por módulo (por compilando).

La optimización completa del programa está desactivada de manera predeterminada y debe habilitarse explícitamente. Sin embargo, también es posible deshabilitarla explícitamente con /GL-.

Con información sobre todos los módulos, el compilador puede:

  • Optimizar el uso de registros a lo largo de los límites de función.

  • Realizar un mejor trabajo de seguimiento de las modificaciones a los datos globales, lo que permite reducir el número de cargas y almacenes.

  • Realizar un seguimiento del posible conjunto de elementos modificados por una desreferencia de puntero, lo que reduce las cargas y almacenes necesarios.

  • Insertar una función en un módulo, incluso cuando la función está definida en otro módulo.

Los archivos .obj generados con /GL no se pueden usar mediante utilidades del enlazador, como EDITBIN y DUMPBIN.

Si compila el programa con /GL y /c, debe usar la opción del enlazador /LTCG para crear el archivo de salida.

/ZI no se puede usar con /GL

A menudo, el formato de los archivos generados con /GL en la versión actual no es legible en las versiones posteriores de Visual Studio y del conjunto de herramientas de MSVC. A menos que esté dispuesto a enviar copias del archivo .lib a todas las versiones de Visual Studio que vayan a utilizar sus usuarios, ahora y en el futuro, no envíe un archivo .lib formado por archivos .obj generados por /GL. Para más información, consulte Restricciones de compatibilidad binaria.

Los archivos .obj generados por /GL y los archivos de encabezado precompilado no deben usarse para compilar un archivo .lib a menos que el archivo .lib esté vinculado en la misma máquina que generó el archivo /GL.obj. La información del archivo de encabezado precompilado del archivo .obj es necesaria en el tiempo de vínculo.

Para más información sobre las optimizaciones disponibles y las limitaciones de la optimización completa del programa, consulte /LTCG. /GL también hace que la optimización guiada por perfiles esté disponible. Si desea que sus optimizaciones guiadas por perfiles tengan ordenamiento de funciones, debe compilar dichas optimizaciones con /Gy o con una opción del compilador que implique /Gy.

Para establecer esta opción del vinculador en el entorno de desarrollo de Visual Studio

Para más información sobre cómo especificar /GL en el entorno de desarrollo, consulte /LTCG (Generación de código en tiempo de vínculo).

Para establecer esta opción del vinculador mediante programación

Consulte también

Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC