/LTCG (vytváření kódu v době propojování)

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

Poznámky

  • : NOSTATUS | : STATUS (nepovinné)
    Určuje, zda se zobrazí indikátor průběhu zobrazující odkaz jaké procento dokončení propojovacího programu.Informace o stavu není ve výchozím nastavení zobrazeny.

  • : PGINSTRUMENT (volitelné)
    Určuje, že výstupy propojovací program, že soubor .pgd v rámci přípravy získávaná test běží v aplikaci.Lze použít /PGD lze zadat název souboru nebo umístění souboru .pgd.

    Data získávaná spuštění sběru slouží k vytvoření optimalizované bitové kopie.Další informace naleznete v tématu Profil řízená optimalizace.Zkratka pro tuto možnost je /LTCG:PGI.

  • : PGOPTIMIZE (volitelné)
    Určuje, že používá propojovací program vytvořený získávaná binární soubor po spuštění k vytvoření optimalizované bitové kopie dat profilu.Všechny vstupní soubory musí být shodné se soubory, které byly zadány v /LTCG:PGI.Další informace naleznete v tématu Profil řízená optimalizace.Zkratka pro tuto možnost je /LTCG:PGO.

  • : PGUPDATE (volitelné)
    Umožňuje seznam vstupních souborů, chcete-li přidat nebo upravit z co bylo určeno: PGINSTRUMENT fáze. Nicméně nové vstupní soubory nejsou optimalizovány pomocí řízená optimalizace a změněné části změny vstupního souboru, které znehodnotit data profilu shromážděné během fáze instrumentation pro tento kód nejsou optimalizovány pomocí řízená optimalizace. Další informace naleznete v tématu Profil řízená optimalizace.Zkratka pro tuto možnost je /LTCG:PGU.

Možnost/ltgc říká propojovacímu programu volat kompilátor a provedení optimalizace celého programu.Můžete také provést profil s asistencí optimalizace.Další informace naleznete v tématu Profil řízená optimalizace.

S následujícími výjimkami nelze přidat možnosti propojovacího programu /LTCG:PGOPTIMIZE nebo /LTCG:PGUPDATE, spuštění, které nebyly zadány v /LTCG:PGINSTRUMENT spustit:

Možnosti propojovacího programu určené pro /LTCG:PGINSTRUMENT nemusí být určen pro /LTCG:PGOPTIMIZE; že je obsaženo.

Zbývající část tohoto tématu popisuje z hlediska generování kódu odkazu/ltgc.

/ LTGC je zahrnuta, s /GL.

Propojovací program vyvolá generování kódu odkazu, pokud je předán modulu, který byl kompilován pomocí /GL nebo modul jazyka MSIL (viz Soubory .netmodule jako vstup linkeru).Pokud neurčíte výslovně /LTCG při předání /GL nebo moduly jazyka MSIL do propojovacího programu propojovací program nakonec to zjistí a restartuje propojení pomocí /LTCG.Explicitně zadat /LTCG při předání /GL a moduly jazyka MSIL do propojovacího programu pro nejrychlejší možné sestavit výkonu.

/LTCGnení platný pro použití s /incremental.

Při /LTCG se používá k propojení moduly zkompilovány pomocí /Og, /O1, /O2, nebo /Ox, jsou provedeny následující optimalizace:

  • Vkládání mezi modul

  • Interprocedural rejstříku přidělení (pouze 64bitové operační systémy)

  • Vlastní konvence volání (pouze x 86)

  • Malé posunutí TLS (pouze x 86)

  • Dvojité zarovnání zásobníku (pouze x 86)

  • Zlepšení paměti odstraňování mnohoznačností (lepší rušení informace pro globální proměnné a parametry)

[!POZNÁMKA]

Propojovací program rozhodne optimalizace, které bylo kompilováno pomocí jednotlivých funkcí a platí stejné optimalizace v době spojení.

Pomocí /LTCG a /Ogt způsobuje dvojité zarovnání optimalizace.

Pokud /LTCG a /Ogs jsou určeny dvojité zarovnání se neprovádí.Pokud většinu funkcí aplikace jsou kompilovány pro rychlost, s několika funkce, zkompilované pro velikost (například pomocí Optimalizace pragma), kompilátor zarovná dvojitá funkce, které jsou optimalizovány pro velikost, pokud volání funkce, které vyžadují dvojí zarovnání.

Pokud kompilátor lze identifikovat všechny weby volání funkce, kompilátor ignoruje explicitní modifikátory konvence volání na funkci a pokusí optimalizovat konvence volání funkce:

  • předat parametry v registrech

  • Změna pořadí parametrů pro zarovnání

  • odebrat nepoužívané parametry

Pokud funkce volané prostřednictvím ukazatele na funkci nebo proveďte funkce je volána mimo modul, který je zkompilován s použitím /GL, kompilátor nebude pokoušet optimalizovat konvence volání funkce.

[!POZNÁMKA]

Použijete-li /LTCG a předefinování mainCRTStartup, vaše aplikace může mít nepředvídatelné chování, které se týkají uživatelský kód, který je spuštěn před globální objekty jsou inicializovány. Chcete-li tento problém vyřešit třemi způsoby: předefinování není mainCRTStartup, není kompilace souboru, který obsahuje mainCRTStartup pomocí /LTCG, nebo globální proměnné a objekty inicializovat staticky.

/ LTGC a moduly jazyka MSIL

Moduly, které jsou kompilovány pomocí /GL a /CLR lze použít jako vstup do propojovacího programu při /LTCG je zadán.

  • /LTCGmůže přijímat objekt nativní soubory, smíšené nativní nebo spravované objekt soubory (kompilován pomocí /clr), čistý objekt soubory (kompilován pomocí /clr:pure) a bezpečné objektové soubory (kompilován pomocí /clr:safe)

  • /LTCGMůžete přijmout bezpečné .netmodules, který lze vytvořit pomocí /clr:safe /LN v aplikaci Visual C++ a /target:module v jiných kompilátoru Visual Studio. .Netmodules vytvořené pomocí**/clr** nebo /clr:pure nejsou přijímány /LTCG.

  • /LTCG:PGI nepřijímá nativní moduly kompilované pomocí /GL a /clr, nebo čisté moduly (vytvořené pomocí /clr:pure)

Chcete-li nastavit tuto možnost kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Práce s vlastnostmi projektu.

  2. Vyberte Vlastnosti konfigurace složky.

  3. Vyberte stránku vlastností Obecné.

  4. Změnit Optimalizace celého programu vlastnost.

Můžete také použít /LTCG na konkrétní sestavení pomocí příkazu sestavení, Profil řízená optimalizace na panelu nabídek nebo pomocí jednoho z profilu řízená optimalizace možnosti v místní nabídce pro projekt.

Chcete-li tuto možnost kompilátoru nastavit v programu

Viz také

Referenční dokumentace

Nastavení možností linkeru

Možnosti linkeru