LLVM 12.0이 이미 출시되었으며이 소식이 있습니다.

Llvm

XNUMX 개월 개발 후 LLVM 12.0 프로젝트의 새 버전 출시가 발표되었습니다. 프로그램을 RISC (다단계 최적화 시스템이있는 저수준 가상 머신)와 유사한 가상 명령어의 중간 비트 코드로 컴파일하는 GCC (컴파일러, 최적화 프로그램 및 코드 생성기) 규격.

이 새 버전에서 다양한 개선 사항과 소식을 찾을 수 있습니다., 여기에서 새로운 기능 속성 "tune-cpu"를 강조 표시하여 -mtune을 gcc로 지원하고 다양한 플랫폼에 대한 개선 사항을 지원할 수 있습니다.

LLVM 12.0의 새로운 주요 기능

이 새 버전에서 우리는 llvm-build 빌드 툴킷 지원 파이썬으로 작성 중단되었습니다. 대신 프로젝트가 CMake 빌드 시스템을 사용하도록 완전히 전환되었습니다.

AArch64 아키텍처의 백엔드는 Windows 플랫폼에 대한 지원을 개선했습니다. 대상 Windows 시스템에 대해 올바른 어셈블러 출력 생성이 제공되고, 해제 호출에 대한 데이터 생성이 최적화되었으며 (해당 데이터 크기가 60 % 감소됨), seh 지시문을 사용하여 해제되는 데이터 생성 기능이 추가되었습니다.

동안 PowerPC 아키텍처 백엔드에는 인라인 및 루프 배포를위한 새로운 최적화가 포함됩니다., Power10 프로세서 지원 개선, 어레이 조작을위한 MMA 명령 추가 지원, AIX 운영 체제 지원 개선.

x86은 AMD Zen 3, Intel Alder Lake 및 Intel Sapphire Rapids 프로세서에 대한 지원을 추가했습니다., HRESET, UINTR 및 AVXVNNI 프로세서에 대한 지침. 메모리 영역 제한에 대해 포인터를 확인하기 위해 MPX 확장 (메모리 보호 확장)에 대한 지원이 제거되었습니다 (이 기술은 널리 사용되지 않았으며 이후 GCC 및 clang에서 제거되었습니다). 어셈블러는 피연산자 및 전환의 오프셋 크기를 제어하기 위해 접두사 {disp32} 및 {disp8} 및 접미사 .d32 및 .d8에 대한 지원을 추가했습니다. 새로운 속성 "tune-cpu"가 추가되어 마이크로 아키텍처 최적화의 활성화를 제어합니다.

눈에 띄는 또 다른 변화는 새로운 모드가 추가되었습니다 "-fsanitize = unsigned-shift-base" 왼쪽으로 비트 이동 한 후 부호없는 정수 오버플로를 감지합니다. Mach-O (macOS) 형식의 경우 arm64, arm 및 i386 아키텍처, LTO (링크 스테이지 최적화) 및 예외 처리시 스택 해제에 대한 지원이 구현됩니다.

또한 새 기능 속성 "tune-cpu"가 강조 표시됨 그것은 o를 허용합니다마이크로 아키텍처 최적화는 "target-cpu"속성에 관계없이 적용됩니다. 또는 명령 세트를 선택하는 데 사용될 TargetMachine CPU. 속성이 없으면 튜닝 CPU가 대상 CPU를 따릅니다.

Libc ++는 C ++ 20 표준의 새로운 기능을 구현합니다. C ++ 2b 사양의 기능 개발을 시작했습니다. 현지화 지원을 사용하지 않는 조립 지원 추가 ( "-DLIBCXX_ENABLE_LOCALIZATION = OFF") 및 의사 난수 생성 장치.

동안 Clang 12의 개선 사항 중 AArch64 아키텍처의 경우 새 컴파일러 플래그가 추가되었습니다. "-Moutline-atomics"및 "-mno-outline-atomics"는 "__aarch64_cas8_relax"와 같은 원자 도우미 기능을 활성화 및 비활성화합니다. 이러한 런타임 함수는 LSE (Large System Extensions)에 대한 지원이 있는지 확인하고 제공된 원자 프로세서 명령 또는 롤백을 사용하여 동기화를 위해 LL / SC (로드 링크 / 저장 조건부) 명령을 사용합니다.

'this'포인터는 이제 null이 아니고 역 참조 가능한 검사로 처리됩니다. (엔). "-fdelete-null-pointer-checks"옵션은 null 값이 필요할 때 null이 아닌 속성을 제거하는 데 사용할 수 있습니다.

AArch64 및 PowerPC 아키텍처 용 Linux에서 "-fasynchronous -wind-tables"는 GCC에서와 같이 롤 호출 테이블을 생성하도록 활성화됩니다.

"#pragma clang loop vectorize_width"에서 벡터화 방법을 선택하는 "고정"(기본값) 및 "확장 가능"옵션을 지정하는 기능이 추가되었습니다.

Linux의 clangd 캐싱 서버 (Clang Server)에서 장기 작업 중 메모리 소비가 크게 감소합니다 (운영 체제에 여유 메모리 페이지를 반환하기 위해 malloc_trim에 대한주기적인 호출이 제공됨).

최종적으로 그것에 대해 더 많이 알고 싶다면 이 새 버전에 대해 다음의 세부 사항을 참조하십시오. 링크


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.