/LTCG (Generación de código en tiempo de enlace)

/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]

Comentarios

  • :NOSTATUS | :STATUS (opcional)
    Especifica si el vinculador muestra un indicador de progreso que indica qué porcentaje del vínculo.De forma predeterminada, no se muestra esta información de estado.

  • :PGINSTRUMENT (opcional)
    Especifica que el vinculador genera que un archivo .pgd en preparación para la prueba instrumentadas se ejecuta en la aplicación.Puede utilizar el /PGD opción para especificar un nombre de archivo o una ubicación para el archivo PGD.

    Los datos que se recopilan de ejecuciones instrumentadas se utilizan para crear una imagen optimizada.Para obtener más información, vea Optimización guiada por perfiles (PGO).La forma abreviada de esta opción es /LTCG:PGI.

  • :PGOPTIMIZE (opcional)
    Especifica que el vinculador utiliza los datos del perfil que se crean después de ejecuta el binario instrumentado para crear una imagen optimizada.Todos los archivos de entrada deben ser idénticos a los archivos que se han especificado en/LTCG: PGI.Para obtener más información, vea Optimización guiada por perfiles (PGO).La forma abreviada de esta opción es /LTCG:PGO.

  • :PGUPDATE (opcional)
    Permite a una lista de archivos de entrada que se agregan o modifican en lo que se ha especificado en el: fase PGINSTRUMENT.Sin embargo, los archivos de entrada nuevos no están optimizados mediante el uso de las optimizaciones guiadas por perfiles y las partes modificadas de un archivo de entrada modificado que invaliden datos de perfil que se recopilan durante la fase de instrumentación para ese código no están optimizadas mediante el uso de las optimizaciones guiadas por perfil.Para obtener más información, vea Optimización guiada por perfiles (PGO).La forma abreviada de esta opción es /LTCG:PGU.

La opción /LTCG le indica al vinculador que llame al compilador y realizar la optimización de todo el programa.También puede realizar una optimización guiada por perfiles.Para obtener más información, vea Optimización guiada por perfiles (PGO).

Con las excepciones siguientes, no se puede agregar las opciones del vinculador para la/LTCG: PGOPTIMIZE o/LTCG: PGUPDATE ejecutar no se especificaron en la ejecución / LTCG: PGINSTRUMENT:

Las opciones del vinculador especificadas para/LTCG: PGINSTRUMENT no debe especificarse para/LTCG: PGOPTIMIZE; ya que están implícitas.

El resto de este tema trata de /LTCG en términos de generación de código de tiempo de enlace.

La opción /LTCG estará implícita si se usa /GL.

El vinculador invoca la generación de código de tiempo de enlace si se pasa un módulo que se compiló mediante el uso de /GL o un módulo MSIL (consulte .Archivos netmodule como entrada del vinculador).Si no se especifica explícitamente /LTCG al pasar /GL o módulos MSIL al vinculador, el vinculador eventualmente lo detecta y se reinicia el vínculo mediante el uso de /LTCG.Especificar explícitamente /LTCG al pasar /GL y rendimiento de generación de módulos MSIL al vinculador para la más rápida posible.

/LTCGno es válido para su uso con /incremental.

Cuando /LTCG se utiliza para vincular los módulos compilados mediante el uso de /Og, /O1, /O2, o /Ox, se llevan a cabo las siguientes optimizaciones:

  • Procesamiento en línea entre módulos

  • Asignación de registros entre procedimientos (sólo en sistemas operativos de 64 bits)

  • Convenciones de llamada personalizadas (sólo x86)

  • Pequeños desplazamientos de TLS (sólo x86)

  • Alineación doble de pila (sólo x86)

  • Mejora en la anulación de ambigüedades en la memoria (mejor información de interferencias para las variables globales y los parámetros de entrada)

[!NOTA]

El vinculador decide qué optimizaciones cada función se compiló con y aplica las mismas optimizaciones en tiempo de vínculo.

Usando /LTCG y /Ogt hace que la optimización de doble alineación.

Si /LTCG y /Ogs se especifica, no se realiza la doble alineación.Si se compila la mayoría de las funciones de una aplicación para la velocidad, con algunas funciones para el tamaño (por ejemplo, mediante el optimizar pragma), el compilador alinea doble las funciones que están optimizadas para el tamaño si llama a funciones que requieren doble alineación.

Si el compilador puede identificar todos los sitios de llamada de una función, el compilador omite los modificadores de convención de llamada explícitos en una función e intenta optimizar la convención de llamada de función:

  • pase los parámetros en registros

  • reordene los parámetros para alineación

  • quite los parámetros no usados

Si se llama a una función a través de un puntero a función, o si se llama a la creación de una función fuera de un módulo que se compila mediante el uso de /GL, el compilador no intenta optimizar la convención de llamada de función.

[!NOTA]

Si utiliza /LTCG y redefinir mainCRTStartup, la aplicación puede tener un comportamiento impredecible que se refiere al código de usuario que se ejecuta antes de que se inicializan los objetos globales.Hay tres formas de tratar este problema: no redefinir mainCRTStartup, no compile el archivo que contiene mainCRTStartup con /LTCG, o inicializar variables globales y objetos de forma estática.

Módulos /LTCG y MSIL

Los módulos que se compilan mediante el uso de /GL y /CLR se puede utilizar como entrada al vinculador cuando /LTCG se especifica.

  • /LTCGpuede aceptar archivos objeto nativo, mezclados los archivos de objeto administrado o nativo (compilado mediante el uso de /clr), puro archivos de objetos (compilado mediante el uso de /clr:pure) y archivos de objetos seguros (compilados mediante el uso de /clr:safe)

  • /LTCG puede aceptar archivosarchivos netmodule, que se puede crear mediante el uso de /clr:safe /LN en Visual C++ y /target:module en cualquier otro compilador de Visual Studio..Archivos netmodule producido mediante el uso de**/clr** o /clr:pure no son aceptados por /LTCG.

  • / LTCG: PGI no acepta módulos nativos compilados mediante el uso de /GL y /clr, o módulos puros (producido mediante el uso de /clr:pure)

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

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto.Vea Modificar la configuración del proyecto.

  2. Seleccione la carpeta Propiedades de configuración.

  3. Seleccione la página de propiedades General.

  4. Modifique la propiedad Optimización de todo el programa.

También se puede aplicar /LTCG para especificar generaciones seleccionando Generar, Optimización guiada por perfiles en la barra de menús, o bien elija una de las opciones de optimización guiada por perfiles en el menú contextual para el proyecto.

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

Vea también

Referencia

Establecer las opciones del vinculador

Opciones del vinculador