Compartilhar via


/ /LTCG (geração de código Link-time)

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

Comentários

  • : NOSTATUS | : O STATUS (opcional)
    Especifica se o vinculador exibe um indicador de progresso mostra a porcentagem do link está concluída.Por padrão, essas informações de status não são exibidas.

  • : PGINSTRUMENT (opcional)
    Especifica que o vinculador gera que um arquivo de .pgd na preparação para teste instrumentado é executado no aplicativo.Você pode usar o /PGD opção para especificar um nome de arquivo ou local para o arquivo .pgd.

    Os dados coletados de execuções instrumentadas são usados para criar uma imagem otimizada.Para obter mais informações, consulte Otimização interativa de perfil.A forma abreviada para esta opção é /LTCG:PGI.

  • : PGOPTIMIZE (opcional)
    Especifica que o vinculador usa os dados de perfil são criados após o binário instrumentado é executado para criar uma imagem otimizada.Todos os arquivos de entrada devem ser idênticos aos arquivos que foram especificados em /LTCG:PGI.Para obter mais informações, consulte Otimização interativa de perfil.A forma abreviada para esta opção é /LTCG:PGO.

  • : PGUPDATE (opcional)
    Permite que uma lista de arquivos de entrada a ser adicionado ou modificado do que foi especificado na: fase PGINSTRUMENT.No entanto, quaisquer novos arquivos de entrada não são otimizados ao usar otimizações guiadas por perfil e partes alteradas de um arquivo de entrada modificado que invalidar perfil dados coletados durante a fase de instrumentação para que o código não são otimizadas ao usar otimizações guiadas por perfil.Para obter mais informações, consulte Otimização interativa de perfil.A forma abreviada para esta opção é /LTCG:PGU.

A opção /LTCG informa o vinculador para chamar o compilador e executar a otimização de programa inteiro.Você também pode fazer Otimização Guiada por perfil.Para obter mais informações, consulte Otimização interativa de perfil.

Com as seguintes exceções, você não pode adicionar opções do vinculador para o /LTCG:PGOPTIMIZE ou /LTCG:PGUPDATE executar que não foram especificados o /LTCG:PGINSTRUMENT executar:

As opções de vinculador especificadas para /LTCG:PGINSTRUMENT não precisam ser especificado para /LTCG:PGOPTIMIZE; eles estão implícitas.

O restante deste tópico discute /LTCG em termos de geração de código link-time.

/ /LTCG é implícita com /GL.

O vinculador invoca a geração de código link-time se ele é passado um módulo que foi compilado usando /GL ou um módulo MSIL (consulte arquivos. netmodule como entrada de vinculador).Se você não especificar explicitamente /LTCG quando passar /GL ou módulos MSIL para o vinculador, o vinculador eventualmente detecta isso e reinicia o link usando o /LTCG.Especificar explicitamente /LTCG quando passar /GL e desempenho de compilação de módulos MSIL para o vinculador para o mais rápido possível.

/LTCGnão é válido para uso com /INCREMENTAL.

Quando /LTCG é usada para vincular módulos compilados usando /Og, /O1, /O2., ou /Ox, as seguintes otimizações são executadas:

  • Cross-módulo inlining

  • Interprocedural registrar alocação (sistemas operacionais 64 bits apenas)

  • Convenção de chamada personalizada (somente x86)

  • Deslocamento pequeno TLS (somente x86)

  • Alinhamento de pilha duplo (somente x86)

  • Desambigüidade de memória aprimorada (informações de interferência melhor para variáveis globais e parâmetros de entrada)

ObservaçãoObservação

O vinculador decide quais otimizações cada função foi compilada com e aplica as otimizações mesmas em tempo de link.

Usando /LTCG e /Ogt faz com que o alinhamento duplo otimização.

Se /LTCG e /Ogs especificado, alinhamento duplo não é executado.Se a maioria das funções em um aplicativo é compilada para velocidade, com algumas funções compiladas para tamanho (por exemplo, usando o otimizar pragma), o compilador duplo alinha as funções que são otimizadas para tamanho se chamam funções que requerem alinhamento duplo.

Se o compilador pode identificar todos os sites de chamada de uma função, o compilador ignora modificadores de convenção de chamada explícitas em uma função e tenta otimizar convenção de chamada da função:

  • passar parâmetros nos registradores

  • reordenar parâmetros para alinhamento

  • Remover parâmetros não utilizados

Se uma função é chamada por meio de um ponteiro de função ou se tornar uma função é chamada fora de um módulo compilado usando /GL, o compilador não tentará otimizar convenção de chamada da função.

ObservaçãoObservação

Se você usar /LTCG e redefinir mainCRTStartup, seu aplicativo pode ter um comportamento imprevisível se relaciona com o código do usuário que executa antes que objetos globais sejam inicializados.Há três maneiras para resolver esse problema: não redefinir mainCRTStartup, não compilar o arquivo que contém mainCRTStartup usando /LTCG, ou inicializar variáveis globais e objetos estaticamente.

/ Módulos MSIL e /LTCG

Os módulos são compilados usando /GL e /clr pode ser usado como entrada para o vinculador quando /LTCG é especificado.

  • /LTCGpode aceitar arquivos de objeto nativo, misturados arquivos objeto nativo/gerenciado (compilados usando /clr), puro arquivos de objeto (compilado usando /clr:pure) e arquivos de objeto de segurança (compilados usando /clr:safe)

  • /LTCGpode aceitar seguro.netmodules, que podem ser criados usando /clr:safe /LN no Visual C++ e /target:module em qualquer outro compilador Visual Studio..Netmodules produzido usando**/clr** ou /clr:pure não são aceitos pelo /LTCG.

  • /LTCG:PGI não aceita nativos módulos compilados usando /GL e /clr, ou módulos puros (produzido usando /clr:pure)

Para definir esta opção de compilador no ambiente de desenvolvimento Visual Studio

  1. Abra o projeto Páginas de propriedades caixa de diálogo.Consulte Modificando as configurações de projeto.

  2. Selecione o Propriedades de configuração pasta.

  3. Selecione o Geral página de propriedade.

  4. Modificar o Otimização de programa inteiro propriedade.

Você também pode aplicar /LTCG para versões específicas escolhendo Build, Otimização interativa de perfil na barra de menus ou escolhendo uma das opções de otimização interativa de perfil no menu de atalho para o projeto.

Para definir esta opção de compilador programaticamente

Consulte também

Referência

Configurando opções de vinculador

Opções do vinculador