/LTCG (Génération de code durant l'édition de liens)
/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]
Notes
:NOSTATUS | :STATUS (facultatif)
Spécifie si l'éditeur de liens affiche un indicateur de progression affiche le pourcentage de la liaison est terminé.Par défaut, les informations d'état ne sont pas affichées.:PGINSTRUMENT (facultatif)
Spécifie que l'éditeur de liens génère qu'un fichier .pgd en vue de tests instrumentés s'exécute sur l'application.Vous pouvez utiliser le /PGD option permet de spécifier un nom de fichier ou un emplacement pour le fichier .pgd.Les données sont collectées à partir des exécutions instrumentées sont utilisées pour créer une image optimisée.Pour plus d'informations, consultez Optimisation guidée par profil.La forme abrégée de cette option est /LTCG:PGI.
:PGOPTIMIZE (facultatif)
Spécifie que l'éditeur de liens utilise les données de profil sont créées après l'exécution du binaire instrumenté pour créer une image optimisée.Tous les fichiers d'entrée doivent être identiques pour tous les fichiers qui ont été spécifiées dans/LTCG : PGI.Pour plus d'informations, consultez Optimisation guidée par profil.La forme abrégée de cette option est /LTCG:PGO.:PGUPDATE (facultatif)
Permet d'obtenir la liste des fichiers d'entrée pour être ajoutés ou modifiés à partir de ce qui a été spécifié dans le : phase PGINSTRUMENT.Toutefois, tous les fichiers d'entrée ne sont pas optimisées par l'utilisation d'optimisations guidées par profil et les parties modifiées d'un fichier d'entrée qui invalident les données de profil recueillies pendant la phase d'instrumentation pour que le code ne sont pas optimisés par l'utilisation d'optimisations guidées par profil.Pour plus d'informations, consultez Optimisation guidée par profil.La forme abrégée de cette option est /LTCG:PGU.
L'option /LTCG indique à l'éditeur de liens pour appeler le compilateur et effectuer l'optimisation de l'ensemble du programme.Vous pouvez également procéder à l'optimisation guidée par profil.Pour plus d'informations, consultez Optimisation guidée par profil.
Avec les exceptions suivantes, vous ne pouvez pas ajouter des options d'éditeur de liens pour le/LTCG : PGOPTIMIZE ou/LTCG : PGUPDATE exécuter qui n'ont pas été spécifiés dans l'exécution de/LTCG : PGINSTRUMENT :
Les options d'éditeur de liens qui sont spécifiées pour/LTCG : PGINSTRUMENT n'ont pas à être spécifiées pour/LTCG : PGOPTIMIZE ; elles sont implicites.
Le reste de cette rubrique traite /LTCG en termes de génération de code lien.
L'option /LTCG va de pair avec l'option /GL.
L'éditeur de liens appelle la génération de code link-time si elle est passée d'un module qui a été compilé à l'aide de /GL ou un module MSIL (consultez Fichiers .netmodule en tant qu'entrée de l'Éditeur de liens).Si vous ne spécifiez pas explicitement /LTCG lorsque vous transmettez /GL ou de modules MSIL à l'éditeur de liens, l'éditeur de liens finalement détecte et redémarre le lien à l'aide de /LTCG.Spécifiez explicitement /LTCG lorsque vous transmettez /GL et performances de génération de modules MSIL à l'éditeur de liens pour la plus rapide possible.
/LTCGn'est pas valide pour une utilisation avec /INCREMENTAL.
Lorsque /LTCG est utilisé pour lier les modules compilés à l'aide de /Og, /O1, /O2, ou Ox, les optimisations suivantes sont effectuées :
Mise sur une fonctionnalité inline inter-module ;
allocation du registre inter-procédures (systèmes d'exploitation 64 bits uniquement) ;
convention d'appel personnalisée (x86 uniquement) ;
petit déplacement TLS (x86 uniquement) ;
double alignement des piles (x86 uniquement) ;
amélioration de la suppression des ambiguïtés en mémoire (meilleures informations d'interférence pour les variables globales et les paramètres d'entrée).
[!REMARQUE]
L'éditeur de liens décide quelles optimisations chaque fonction a été compilée avec et applique les mêmes optimisations au moment de la liaison.
À l'aide de /LTCG et /Ogt entraîne l'optimisation double alignement.
Si /LTCG et /Ogs sont spécifiés, double alignement n'est pas effectuée.Si la plupart des fonctions dans une application sont compilées pour la vitesse, avec quelques fonctions compilées pour la taille (par exemple, en utilisant la optimiser pragma), le compilateur double aligne les fonctions qui sont optimisées pour la taille si celles-ci appellent des fonctions qui nécessitent une double alignement.
Si le compilateur peut identifier tous les sites d'appel d'une fonction, le compilateur ignore les modificateurs de convention d'appel explicites sur une fonction et tente d'optimiser la convention d'appel de la fonction :
en passant les paramètres dans les registres ;
en réorganisant les paramètres pour l'alignement ;
en supprimant les paramètres inutilisés.
Si une fonction est appelée via un pointeur fonction, ou si une marque de la fonction est appelée en dehors d'un module est compilé à l'aide de /GL, le compilateur n'essaie pas d'optimiser la convention d'appel d'une fonction.
[!REMARQUE]
Si vous utilisez /LTCG et redéfinissez mainCRTStartup, votre application peut avoir un comportement imprévisible qui a trait au code utilisateur qui s'exécute avant l'initialisation des objets globaux.Il existe trois méthodes pour résoudre ce problème : ne redéfinissez pas mainCRTStartup, ne compilez pas le fichier qui contient mainCRTStartup à l'aide de /LTCG, ou d'initialiser des variables globales et les objets statiquement.
Modules /LTCG et MSIL
Les modules sont compilés à l'aide de /GL et /CLR peut être utilisé comme entrée dans l'éditeur de liens lors de la /LTCG est spécifié.
/LTCGpeut accepter des fichiers objet natif, mixtes natif/managé objet (fichiers) (compilé à l'aide de /clr), pur fichiers d'objet (compilé à l'aide de /clr:pure) et les fichiers objet sécurisé (compilé à l'aide de /clr:safe)
/LTCG peut accepter desdes netmodules, qui peut être créés à l'aide de /clr:safe /LN dans Visual C++ et /target:module dans tout autre compilateur Visual Studio..Des netmodules produites à l'aide de**/clr** ou /clr:pure ne sont pas acceptés par /LTCG.
/ LTCG : PGI n'accepte pas les modules natifs compilés à l'aide de /GL et /clr, ou de modules pure (produites à l'aide de /clr:pure)
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriétés du projet.Consultez Modification des paramètres d'un projet.
Sélectionnez le dossier Propriétés de configuration.
Sélectionnez la page de propriétés Général.
Modifiez la propriété Optimisation de l'ensemble du programme.
Vous pouvez également appliquer des /LTCG à des générations spécifiques en choisissant Build, Optimisation guidée par profil dans la barre de menu, ou en choisissant l'une des options optimisation guidée par profil dans le menu contextuel pour le projet.
Pour définir cette option du compilateur par programmation
- Consultez LinkTimeCodeGeneration.