다음을 통해 공유


/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 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트 속성 페이지 대화 상자를 엽니다.자세한 내용은 프로젝트 설정 수정를 참조하십시오.

  2. 구성 속성 폴더를 선택합니다.

  3. 일반 속성 페이지를 클릭합니다.

  4. 전체 프로그램 최적화 속성을 수정합니다.

적용할 수도 있습니다 /LTCG 를 선택 하 여 특정 빌드 빌드, 프로필 기반 최적화 프로젝트에 대 한 바로 가기 메뉴에서 프로필 기반 최적화 옵션 중 하나를 선택 하거나 메뉴 표시줄에서.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

참조

링커 옵션 설정

링커 옵션