/LTCG(링크 타임 코드 생성)
/LTCG[:NOSTATUS|:STATUS|:PGINSTRUMENT|:PGOPTIMIZE|:PGUPDATE]
설명
:NOSTATUS | :STATUS(선택적)
링커에서 링크 완료율을 표시 하는 진행률 표시기를 표시할지 여부를 지정 합니다.기본적으로이 상태 정보는 표시 되지 않습니다.:PGINSTRUMENT(선택적)
링커에서 응용 프로그램의.pgd 파일을 준비 하는 계측 된 테스트 실행 출력 있음을 지정 합니다.사용할 수 있는 /PGD 파일 이름이.pgd 파일 위치를 지정 하는 옵션.계측 된 실행에서 수집 된 데이터는 최적화 이미지를 만드는 데 사용 됩니다.자세한 내용은 프로필 기반 최적화를 참조하십시오.이 옵션의 약식 표현은 /LTCG:PGI입니다.
:PGOPTIMIZE(선택적)
링커에서 계측 된 이진 파일을 실행 하 여 최적화 된 이미지를 만들려면 후 생성 된 프로필 데이터를 사용 하 여 지정 합니다.모든 입력된 파일은 /ltcg: pgi에 지정한 파일과 동일 해야 합니다.자세한 내용은 프로필 기반 최적화를 참조하십시오.이 옵션의 약식 표현은 /LTCG:PGO입니다.:PGUPDATE(선택적)
목록을 추가 또는 수정 내용에 지정 된에서 입력된 파일의 수는: PGINSTRUMENT 단계.그러나 모든 새 입력된 파일 프로필 기반 최적화를 사용 하 여 최적화 되지 않습니다 및 프로필 기반 최적화를 사용 하 여 해당 코드의 계측 단계에 수집 된 프로필 데이터를 무효화 하는 변경 된 부분 수정 된 입력된 파일의 최적화 않았습니다.자세한 내용은 프로필 기반 최적화를 참조하십시오.이 옵션의 약식 표현은 /LTCG:PGU입니다.
/LTCG 옵션 링커에서 컴파일러를 호출한 후 전체 프로그램 최적화를 수행 합니다.프로필 기반 최적화를 수행할 수도 있습니다.자세한 내용은 프로필 기반 최적화를 참조하십시오.
다음 예외를 /ltcg:pgoptimize에 링커 옵션을 추가할 수 없습니다 또는 /LTCG:PGUPDATE 실행 실행은 /ltcg:pginstrument에 지정 된:
지정 된 링커 옵션에 /LTCG:PGINSTRUMENT /ltcg:pgoptimize에 지정할 필요가 없습니다. 암시 되어 있습니다.
이 항목의 나머지 /ltcg을 링크 타임 코드 생성의 관점에서 설명합니다.
/LTCG를 지정하면 /GL도 지정됩니다.
링크 타임 코드 생성을 사용 하 여 컴파일된 모듈 전달 하는 경우 링커를 호출 /GL 또는 MSIL 모듈 (참조 링커 입력 파일로 사용하는 .netmodule 파일).명시적으로 지정 하지 않으면 /LTCG 전달할 때 /GL 또는 MSIL 모듈을 링커에 결국 링커가이 감지 하 고 링크를 사용 하 여 다시 시작 /LTCG.명시적으로 지정 /LTCG 전달할 때 /GL 및 MSIL 모듈을 링커에 대해 가장 빠른 빌드 성능을.
/LTCG잘못 사용 되었습니다 /INCREMENTAL.
때 /LTCG 를 사용 하 여 컴파일된 모듈에 연결 하는 데 사용 됩니다 /Og, /O1, /O2, 또는 /Ox, 다음의 최적화 작업이 수행 됩니다.
크로스 모듈 인라인
프로시저 간 레지스터 할당(64비트 운영 체제 전용)
사용자 지정 호출 규칙(x86 전용)
작은 TLS 치환(x86 전용)
스택 이중 할당(x86 전용)
메모리 명확성 향상(전역 변수 및 입력 매개 변수에 대한 자세한 충돌 정보)
[!참고]
링커는 각 함수를 컴파일할 때 사용한 및 동일한 최적화 링크 시 적용 되는 최적화를 결정 합니다.
사용 하 여 /LTCG 및 /Ogt 이중 발생 합니다.
경우 /LTCG 및 /Ogs 지정, 이중 정렬을 수행 합니다.응용 프로그램의 함수 대부분은 속도와 크기에 대해 컴파일되고 일부 함수 컴파일됩니다 경우 (예를 들어,를 사용 하 여는 최적화 pragma), 컴파일러 더블-이중 정렬이 필요로 하는 함수를 호출 하는 경우에 크기에 대 한 최적화 된 함수 맞춥니다.
컴파일러가 모든 함수 호출 사이트를 식별할 수 있습니다 경우 컴파일러는 함수에 대 한 명시적 호출 규칙 한정자를 무시 하 고 함수의 호출 규칙을 최적화 하려고:
레지스터를 사용하여 매개 변수 전달
맞춤을 위해 매개 변수 순서 변경
사용되지 않는 매개 변수 제거
함수 포인터를 통해 함수를 호출 하는 경우 또는 함수 만들기를 사용 하 여 컴파일된 모듈 외부 호출 하면 /GL에서 컴파일러는 함수의 호출 규칙을 최적화 하려고 합니다.
[!참고]
사용 하는 경우 /LTCG 고 maincrtstartup, 응용 프로그램 전역 개체가 초기화 되기 전에 실행 되는 사용자 코드에 관련 되어 예기치 않은 동작이 있을 수 있습니다.이 문제를 해결 하는 방법은 세 가지가: maincrtstartup지 않습니다, Maincrtstartup을 사용 하 여 포함 된 파일을 컴파일하지 마십시오 /LTCG, 또는 정적 전역 변수 및 개체를 초기화 합니다.
/LTCG와 MSIL 모듈
사용 하 여 컴파일되는 모듈 /GL 및 /clr 링커에 입력 파일로 사용할 수 있습니다 때 /LTCG 지정 됩니다.
/LTCG네이티브 개체 파일, 혼합 네이티브/관리 개체 파일을 받아들일 수 있습니다 (사용 하 여 컴파일된 /clr), 순수 개체 파일 (사용 하 여 컴파일된 /clr:pure), 및 안전한 개체 파일 (사용 하 여 컴파일된 /clr:safe)
/LTCG를 지정하면 Visual C++에서netmodule을 사용 하 여 만들 수 있습니다, /clr:safe /LN Visual C++에서 및 /target:module Visual Studio 컴파일러에서..Netmodule 생성을 사용 하 여**/clr** 또는 /clr:pure 가 수락 되지 않습니다 /LTCG.
/Ltcg: pgi를 사용 하 여 컴파일된 네이티브 모듈이 적용 되지 않습니다 /GL 및 /clr, 또는 순수 모듈 (사용 하 여 생성 한 /clr:pure)
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트 속성 페이지 대화 상자를 엽니다.자세한 내용은 프로젝트 설정 수정를 참조하십시오.
구성 속성 폴더를 선택합니다.
일반 속성 페이지를 클릭합니다.
전체 프로그램 최적화 속성을 수정합니다.
적용할 수도 있습니다 /LTCG 를 선택 하 여 특정 빌드 빌드, 프로필 기반 최적화 프로젝트에 대 한 바로 가기 메뉴에서 프로필 기반 최적화 옵션 중 하나를 선택 하거나 메뉴 표시줄에서.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- 자세한 내용은 LinkTimeCodeGeneration를 참조하십시오.