/GL (Otimização do programa inteiro)

Habilita a otimização de todo o programa.

Sintaxe

/GL[-]

Comentários

A otimização do programa inteiro permite que o compilador execute otimizações com informações sobre todos os módulos do programa. Sem a otimização de programa inteiro, as otimizações são executadas por módulo (compiland).

A otimização do programa inteiro está desativada por padrão e deve ser explicitamente habilitada. No entanto, também é possível desabilitá-la explicitamente com /GL-.

Com informações sobre todos os módulos, o compilador pode:

  • Otimizar o uso de registradores entre limites de função.

  • Realizar um trabalho melhor de acompanhamento de modificações em dados globais, permitindo uma redução no número de carregamentos e armazenamentos.

  • Acompanhar o possível conjunto de itens modificados por uma desreferência de ponteiro, reduzindo os carregamentos e armazenamentos necessários.

  • Embutir uma função em um módulo mesmo que a função esteja definida em outro módulo.

Os arquivos .obj produzidos com /GL não são utilizáveis por utilitários do vinculador, como EDITBIN e DUMPBIN.

Se você compilar o programa com /GL e /c, você deverá usar a opção do vinculador /LTCG para criar o arquivo de saída.

/ZI não pode ser usado com /GL

O formato de arquivos produzidos com /GL na versão atual geralmente não é legível por versões posteriores do Visual Studio e do conjunto de ferramentas do MSVC. A menos que você esteja disposto a enviar cópias do arquivo .lib para todas as versões do Visual Studio que você espera que seus usuários usem agora e no futuro, não envie um arquivo .lib composto por arquivos .obj produzidos por /GL. Para obter mais informações, confira Restrições de compatibilidade binária.

Os arquivos .obj produzidos por /GL arquivos de cabeçalho pré-compilados não devem ser usados para criar um arquivo .lib, a menos que o arquivo .lib esteja vinculado no mesmo computador que produziu o arquivo /GL.obj. As informações do cabeçalho pré-compilado do arquivo .obj são necessárias no tempo de vinculação.

Para obter mais informações sobre as otimizações disponíveis e as limitações da otimização do programa inteiro, confira /LTCG. /GL também disponibiliza a otimização guiada de perfil. Ao compilar para otimizações guiadas de perfil e se você quiser ordenamento de funções das otimizações guiadas de seu perfil, você deverá compilar com /Gy ou uma opção de compilador que com a opção /Gy implícita.

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

Para obter mais informações sobre como especificar /GL no ambiente de desenvolvimento, confira /LTCG (Geração de código em tempo de vinculação).

Para definir esta opção do vinculador por meio de programação

Confira também

Opções do compilador MSVC
Sintaxe de linha de comando do compilador MSVC