LLVM
LLVM![]() | |
원저작자 | 비크람 아드베, 크리스 래트너 |
---|---|
개발자 | LLVM 개발자 그룹 |
초기 릴리즈 | 전( |
안정된 릴리스 | 2022년[2] 6월 25일 14.0.6 |
저장소 | |
기입처 | C++ |
운영 체제 | 크로스 플랫폼 |
유형 | 컴파일러 |
면허증. | UIUC(BSD 스타일) LLVM 예외 포함 Apache 라이센스 2.0([3]v9.0.0 이후) |
웹 사이트 | www |
LLVM은 컴파일러와 툴 체인[4] 테크놀로지 세트입니다.모든 프로그래밍 언어의 프런트엔드와 명령어 세트아키텍처의 백엔드를 개발하는 데 사용할 수 있습니다.LLVM은 여러 [5]패스에 걸쳐 다양한 변환으로 최적화할 수 있는 휴대용 고급 어셈블리 언어 역할을 하는 IR(Independent Intermediate Representation)을 중심으로 설계되었습니다.
LLVM은 C++로 작성되며 컴파일 시간, 링크 시간, 런타임 및 "아이돌 시간" 최적화를 위해 설계되었습니다.원래 C와 C++로 구현된 경우 LLVM의language-agnostic 디자인부터 전면 끝이 나는 LLVM(또는 직접지만 LLVM IR로 컴파일된 프로그램을 창출할 수 있는 LLVM을 사용하지 않는다)를 사용하는 컴파일러와 언어 액션 스크립트, 에이다, C#,[6][7][8]커먼 리스프, PicoLisp, 크리스탈, CUDA, D, 델피, 딜런, Forth,[9]등 다양한: 낳았다. 포트란, 버섯ee Basic, Free Pascal, Graphical G,[10] Halide, Haskell, Java 바이트코드, Julia, Kotlin, Lua, Objective-C, OpenCL,[11] PostgreSQL의 SQL 및 PLPGSQL,[12] [13]Ruby, Rust, Scala,[14] Swift, XC,[15] Xojo 및 Zig.
역사
LLVM 프로젝트는 2000년 일리노이 대학교 Urbana-Champaign에서 Vikram Adve와 Chris Ratner의 지도 아래 시작되었습니다.LLVM은 원래 정적 및 동적 프로그래밍 언어의 동적 컴파일 기술을 조사하기 위한 연구 인프라로 개발되었습니다.LLVM은 일리노이 대학/NCSA 오픈 소스 라이센스([3]허용 자유 소프트웨어 라이센스)에 따라 출시되었습니다.2005년 애플사.Latner를 고용하여 LLVM 시스템에서 작업하는 팀을 구성하여 Apple의 개발 [16]시스템 내에서 다양한 용도로 사용하였습니다.LLVM은 Xcode [17]4 이후 MacOS 및 iOS용 Apple Xcode 개발 도구의 필수적인 부분입니다.
2006년, 래트너는 클랭이라고 불리는 새로운 프로젝트를 시작했다.Clang 프런트엔드와 LLVM 백엔드의 조합을 Clang/LLVM 또는 단순히 Clang이라고 합니다.
LLVM이라는 이름은 원래 로우 레벨 가상 머신의 이니셜이었습니다.그러나 LLVM 프로젝트는 대부분의 현재 개발자들이 가상 머신이라고 생각하는 것과 거의 관련이 없는 포괄적인 프로젝트로 발전했습니다.이와 같이 초기주의는 "혼란"과 "부적절"이었으며, 2011년부터 LLVM은 "공식적으로 더 이상 [18]약어가 아니다"였다.2011년 이후 LLVM은 LLVM 중간 표현(IR), LLVM 디버거, C++ 표준 라이브러리의 LLVM 구현(C++11 및 C++14를[20] 완전히 지원) 등을 포함하는 LLVM 통합 프로젝트에 [19]적용되는 브랜드입니다.이 회사의 사장은 컴파일러 엔지니어 Tanya Ratner입니다.[21]
"LLVM의 설계 및 구현에 대해"는 컴퓨팅 머신 협회(Association for Computing Machine)에서 Vikram Adve, Chris Ratner 및 Evan Cheng에게 2012 ACM Software System [22]Award를 수여했습니다.
이 프로젝트는 원래 UIUC 라이센스로 사용 가능했습니다.2019년에 [23]출시된 v9.0.0 이후 LLVM은 [3]LLVM 예외와 함께 Apache License 2.0으로 리센스하는 중입니다.리센싱이 완료되면 프로젝트는 새 라이센스로만 사용할 수 있습니다.그때까지 새로운 기여는 이중 라이선스로 제공되며 프로젝트는 "레거시" UIUC [24]라이센스로 계속 사용할 수 있습니다.2022년 3월[update] 23일 현재 650명의 개인들이 기부금을 [25]남기지 않았다.
특징들
LLVM은 컴파일러에서 중간 표현(IR) 코드를 가져와 최적화된 IR을 내보내는 완전한 컴파일러 시스템의 중간 계층을 제공할 수 있습니다.그런 다음 이 새로운 IR을 변환하여 타깃 플랫폼의 머신 의존 어셈블리 언어 코드로 링크할 수 있습니다.LLVM은 GNU 컴파일러 컬렉션(GCC) 툴 체인에서 IR을 받아들일 수 있기 때문에 해당 프로젝트에 대해 작성된 광범위한 기존 컴파일러 프런트 엔드와 함께 사용할 수 있습니다.
LLVM은 컴파일 시 또는 링크 시 재배치 가능한 머신 코드를 생성하거나 런타임에 바이너리 머신 코드를 생성할 수도 있습니다.
LLVM은 언어에 의존하지 않는 명령 집합 및 [5]유형 시스템을 지원합니다.각 명령은 정적 단일 할당 형식(SSA)으로, 각 변수(타입 레지스터라고 함)가 한 번 할당된 후 고정됨을 의미합니다.이를 통해 변수 간의 종속성 분석을 단순화할 수 있습니다.LLVM을 사용하면 기존 GCC 시스템 하에서 코드를 정적으로 컴파일하거나 Java와 마찬가지로 JIT(Just-In-Time Compilation)를 통해 IR에서 머신 코드로 늦게 컴파일할 수 있습니다.유형 시스템은 정수 또는 부동 소수점 숫자와 같은 기본 유형과 포인터, 배열, 벡터, 구조 및 함수 5가지 파생 유형으로 구성됩니다.이들 기본형을 LLVM에 조합함으로써 구체적인 언어로 구성된 유형을 나타낼 수 있다.예를 들어, C++의 클래스는 구조, 함수 및 함수 포인터의 배열의 혼합으로 표현될 수 있습니다.
LLVM JIT 컴파일러는 런타임에 불필요한 정적 브랜치를 프로그램 밖으로 최적화할 수 있기 때문에 프로그램에 많은 옵션이 있는 경우 부분 평가에 유용합니다.이러한 옵션은 특정 환경에서 불필요하다고 판단하기 쉽습니다.이 기능은 누락된 하드웨어 [26]기능을 지원하기 위해 Mac OS X Leopard(v10.5)의 OpenGL 파이프라인에서 사용됩니다.
OpenGL 스택 내의 그래픽 코드는 중간 표현으로 남겨두고 타깃 머신에서 실행할 때 컴파일할 수 있습니다.하이엔드 그래픽스 처리 장치(GPU)를 탑재한 시스템에서는 생성된 코드가 매우 얇아 최소한의 변경으로 GPU에 명령을 전달합니다.로우엔드 GPU를 탑재한 시스템에서는 LLVM은 로컬 중앙처리장치(CPU)에서 실행되는 옵션 프로시저를 컴파일하여 GPU가 내부적으로 실행할 수 없는 명령을 에뮬레이트합니다.LLVM은 인텔 GMA 칩셋을 사용하여 로우엔드 머신의 성능을 향상시켰습니다.이와 유사한 시스템이 Galium 3D LLVMpipe 아래에서 개발되어 GNOME 쉘에 통합되어 적절한 3D 하드웨어 드라이버가 [27]로드되지 않아도 실행할 수 있게 되었습니다.
컴파일된 프로그램의 런타임 퍼포먼스에 대해서는 GCC가 2011년에 [28][29]LLVM을 평균 10% 웃돌았습니다.2013년의 새로운 결과에 따르면 LLVM은 이제 이 분야에서 GCC를 따라잡았으며 거의 동일한 [30]성능의 이진 파일을 컴파일하고 있습니다.
구성 요소들
LLVM은 여러 구성 요소를 포함하는 포괄적 프로젝트가 되었습니다.
프런트 엔드
LLVM은 원래 GCC [31]스택의 기존 코드제너레이터를 대체하기 위해 작성되었으며, 많은 GCC 프론트엔드가 변경되어 현재는 사용되지 않는 LLVM-GCC 스위트가 되었습니다.GCC의 GIMPLE 시스템 대신 LLVM 옵티마이저와 코드젠을 사용할 수 있도록 변경에는 일반적으로 GIMPLE-to-LLVM IR 단계가 포함됩니다.Apple은 Xcode 4.x(2013)[32][33]를 통해 LLVM-GCC의 중요한 사용자였습니다.이러한 GCC 프런트엔드의 사용은 대부분 일시적인 조치로 여겨졌지만 Clang의 등장으로 LLVM과 Clang의 최신 및 모듈러 코드베이스의 장점(컴파일 속도도 마찬가지)은 거의 사용되지 않게 되었습니다.
LLVM은 현재 다양한 프런트 엔드를 사용하여 Ada, C, C++, D, Delphi, Fortran, Haskell, Julia, Objective-C, Rust 및 Swift 컴파일을 지원합니다.
LLVM에 대한 폭넓은 관심으로 인해 다양한 언어를 위한 새로운 프런트 엔드를 개발하기 위한 여러 가지 노력이 이루어졌습니다.가장 주목받은 것은 C, C++, Objective-C를 지원하는 새로운 컴파일러 Clang입니다.주로 Apple이 지원하는 Clang은 GCC 시스템의 C/Objective-C 컴파일러를 통합 개발 환경(IDE)과 보다 쉽게 통합되고 멀티스레딩을 보다 폭넓게 지원하는 시스템으로 교체하는 것을 목표로 하고 있습니다.OpenMP 디렉티브 지원은 릴리즈 3.[34]8부터 Clang에 포함되어 있습니다.
위트레흐트 해스켈 컴파일러는 LLVM용 코드를 생성할 수 있습니다.제너레이터는 개발 초기 단계이지만 많은 경우 C 코드 [35]제너레이터보다 더 효율적입니다.LLVM을 사용한 Glasgow Haskell 컴파일러(GHC) 백엔드가 있습니다.이 백엔드는 GHC [36]또는 C 코드 생성을 통해 네이티브 코드 컴파일과 비교하여 컴파일된 코드의 속도를 30% 향상시킨 후 컴파일을 수행합니다.GHC에 의해 구현된 많은 최적화 기술 중1개만 누락되어 있습니다.
Rust 컴파일러, Java 바이트 코드 프론트 엔드, CIL(Common Intermediate Language) 프론트 엔드, Ruby 1.9의 MacRuby 구현, Standard ML의 다양한 프론트 엔드, 새로운 그래프 컬러 레지스터 할당기 [citation needed]등 많은 컴포넌트들이 다양한 개발 단계에 있습니다.
중간 표현

LLVM의 핵심은 어셈블리와 유사한 저수준 프로그래밍 언어인 중간 표현(IR)입니다.IR은 타깃의 대부분의 세부사항을 추상화하는 RISC(Reduced Instruction Set Computing) 명령어세트입니다예를 들어, 호출 규약은 명시적인 인수를 사용하여 호출 및 재시도 명령을 통해 추상화됩니다.또한 고정 레지스터 세트 대신 IR은 %0, %1 등의 형식의 무제한 임시 세트를 사용합니다.LLVM은 인간이 읽을 수 있는 어셈블리 포맷, 프론트엔드에 적합한 인메모리 포맷 및 시리얼화를 위한 고밀도 비트코드 포맷의 3가지 동등한 IR 형식을 지원합니다.IR [37]형식의 간단한 "Hello, world!" 프로그램:
@.str = 내부의 일정한 [14 x i8] c"안녕하세요, 월드\0"A\00인치 선언하다 i32 @printf(i8*, ...) 정의하다 i32 @main(i32 %440c, i8** %440v) 명사풍 { 엔트리: %tmp1 = 요소 [14 x i8], [14 x i8]* @.str, i32 0, i32 0 %tmp2 = 불러 i32 (i8*, ...) @printf( i8* %tmp1 ) 명사풍 리트 i32 0 }
서로 다른 타겟에서 사용되는 다양한 규칙과 기능은 LLVM이 실제로 타겟에 의존하지 않는 IR을 생성하고 확립된 규칙을 위반하지 않고는 타깃을 변경할 수 없음을 의미합니다.문서에 명시적으로 기재되어 있지 않은 목표 의존성의 예는 온라인 [38]배포를 목적으로 하는 LLVM IR의 완전한 목표물에 의존하지 않는 변종인 "워드 코드"의 2011년 제안서에서 찾을 수 있습니다.보다 실용적인 예는 PNaCl입니다.[39]
또한 LLVM 프로젝트에서는 MLIR이라고 하는[40] 다른 유형의 중간 표현을 도입하고 있습니다.MLIR는 [41]Latio라는 플러그인 아키텍처를 채택하여 재사용 가능하고 확장 가능한 컴파일러 인프라스트럭처를 구축하는 데 도움이 됩니다.다면체 컴파일을 포함한 최적화 과정에서 프로그램 구조에 대한 상위 수준의 정보를 사용할 수 있습니다.
백엔드
버전 13에서 LLVM은 IA-32, x86-64, ARM, Qualcomm Hexagon, MIPS, Nvidia 병렬 스레드 실행(PTX, LLVM 설명서에서는 NVPTX라고 함), PowerPC, AMD TeraScale,[42] AMD GPU 최신 버전(AMDG)을 포함한 많은 명령 세트를 지원합니다.
일부 기능은 일부 플랫폼에서 사용할 수 없습니다.대부분의 기능은 IA-32, x86-64, z/아키텍처, ARM 및 [44]PowerPC에 탑재되어 있습니다.RISC-V는 버전7부터 지원됩니다.
과거 LLVM은 C 백엔드, Cell SPU, mblaze([45]MicroBlaze), AMD R600, DEC/Compaq Alpha(Alpha [46]AXP), Nios2 [47]등 기타 백엔드도 완전 또는 부분적으로 지원했지만 하드웨어는 대부분 구식이며 LLVM 개발자는 지원 및 유지보수 비용이 더 이상 [citation needed]정당화되지 않았다고 판단했습니다.
LLVM은 Web Assembly를 타겟으로 지원하므로 컴파일된 프로그램을 Google Chrome/Cromium, Firefox, Microsoft Edge, Apple Safari 또는 WAVM 등의 Web Assembly 지원 환경에서 실행할 수 있습니다.LLLVM 준거 Web Assembly 컴파일러는 일반적으로 C, C+, D, RustLin으로 작성된 수정되지 않은 소스 코드를 지원합니다.s.
LLVM 머신 코드(MC) 서브 프로젝트는 텍스트 형식과 머신 코드 간에 머신 명령을 변환하기 위한 LLVM의 프레임워크입니다.이전에는 LLVM이 시스템어셈블러 또는 툴체인이 제공하는 어셈블리에 의존하여 어셈블리를 머신코드로 변환했습니다.LLVM MC의 통합 어셈블러는 IA-32, x86-64, ARM 및 ARM64를 포함한 대부분의 LLVM 타깃을 지원합니다.다양한 MIPS 명령 세트를 포함한 일부 타깃의 경우 통합 어셈블리 지원을 사용할 수 있지만 아직 베타 단계에 [citation needed]있습니다.
링커
lld 서브프로젝트는 [48]LLVM용 플랫폼에 의존하지 않는 임베디드 링커를 개발하려는 시도입니다.lld는 서드파티 링커에 대한 의존을 없애는 것을 목적으로 합니다.2017년 5월[update] 현재, lld는 ELF, PE/COFF, Mach-O, Web[49] Assembly를 내림차순으로 지원하고 있습니다.lld는 GNU [citation needed]LD의 두 가지 맛보다 빠릅니다.
GNU 링커와는 달리 lld는 링크 타임 최적화를 위한 지원을 내장하고 있습니다.이를 통해 링커 플러그인을 사용하지 않기 때문에 코드 생성 속도가 빨라지지만 다른 버전의 [50]LTO와의 상호 운용성은 금지됩니다.
C++ 표준 라이브러리
LLVM 프로젝트에는 libc++라는 이름의 C++ 표준 라이브러리의 구현이 포함됩니다.이 라이브러리는 MIT 라이선스와 UIUC [51]라이선스에 따라 이중 라이선스가 부여됩니다.
v9.0.0 이후 LLVM [3]예외와 함께 Apache License 2.0에 반영되었습니다.
폴리
이는 다면체 모델을 [52]사용한 자동 병렬화 및 벡터화뿐만 아니라 캐시-로컬리티 최적화 스위트를 구현합니다.
디버거
C 표준 라이브러리
llvm-libc는 LLVM 프로젝트에 [53]의해 및 LLVM을 위해 설계된 불완전한 ABI 독립형 C 표준 라이브러리입니다.
파생상품
이 라이선스는 허가되어 있기 때문에 많은 벤더가 자체 튜닝된 LLVM 포크를 출시하고 있습니다.이는 LLVM의 설명서에서 공식적으로 인정되고 있습니다.이러한 이유로 [54]기능 체크에 버전 번호를 사용하지 않는 것이 좋습니다.벤더에는 다음과 같은 것이 있습니다.
- AMD의 AMD Optimizing C/C++ 컴파일러는 LLVM, Clang 및 Flang을 기반으로 합니다.
- 애플은 [55]Xcode용 오픈 소스 포크를 보유하고 있다.
- ARM은 LLVM 9의 포크를 "Arm 컴파일러"로 유지합니다.
- 인텔은 차세대 인텔 C++ [56]컴파일러에 LLVM을 채택했습니다.
- Los Alamos 국립 연구소에는 "Kitsune"[57]라고 불리는 LLVM 8 병렬 컴퓨팅 포크가 있습니다.
- 2013년부터 Sony는 PlayStation 4 [58]콘솔의 소프트웨어 개발 키트(SDK)에 LLVM의 주요 프런트 엔드 Clang 컴파일러를 사용해 왔습니다.
- NVIDIA는 NVVM CUDA [59]컴파일러 구현에 LLVM을 사용합니다.NVVM 컴파일러는 Backends 섹션에서 설명한 "NVPTX" 백엔드와는 다르지만 둘 다 Nvidia GPU용 PTX 코드를 생성합니다.
- IBM은 C/C++ 및 Fortran [60]컴파일러에 LLVM을 채택하고 있습니다.
「 」를 참조해 주세요.
- 공통 중간 언어
- HHVM
- C-
- 암스테르담 컴파일러 키트(ACK)
- LLDB(디버거)
- GNU 번개
- GNU 컴파일러 컬렉션(GCC)
- 순수하다
- OpenCL
- ROCM
- 엠스크립트
- TenDRA 배포 형식
- 아키텍처 중립 전달 형식(ANDF)
- 응용 프로그램 가상 시스템 비교
- 스피르-V
- 일리노이 대학교 Urbana Champaign의 발견과 혁신
문학.
- Chris Ratner - 오픈 소스 애플리케이션의 아키텍처 - 11장 LLVM, ISBN978-1257638017, 2012년 CC BY 3.0(오픈 액세스)[61]으로 출시.
- LLVM: 평생 프로그램 분석 및 변환을 위한 컴파일 프레임워크(Compilation Framework for Lifely Program Analysis & Transformation)는 Vikram Adve의 Chris Latner에 의해 발행된 논문입니다.
레퍼런스
- ^ "LLVM Logo". The LLVM Compiler Infrastructure Project.
- ^ "LLVM 14.0.6 Release". June 25, 2022. Retrieved June 27, 2022.
- ^ a b c d "LICENSE.TXT". llvm.org. Retrieved September 24, 2019.
- ^ "The LLVM Compiler Infrastructure Project". Retrieved March 11, 2016.
- ^ a b "LLVM Language Reference Manual". Retrieved June 9, 2019.
- ^ "Announcing LLILC - A new LLVM-based Compiler for .NET". dotnetfoundation.org. Retrieved September 12, 2020.
- ^ Mono LLVM, retrieved March 10, 2013
- ^ Chris Lattner (2011). "LLVM". In Amy Brown; Greg Wilson (eds.). The Architecture of Open Source Applications.
- ^ "MovForth". GitHub. November 28, 2021.
- ^ William Wong (May 23, 2017). "What's the Difference Between LabVIEW 2017 and LabVIEW NXG?". Electronic Design.
- ^ Michael Larabel (April 11, 2018). "Khronos Officially Announces Its LLVM/SPIR-V Translator". phoronix.com.
- ^ "32.1. What is JIT compilation?". PostgreSQL Documentation. November 12, 2020. Retrieved January 25, 2021.
- ^ "Features". RubyMotion. Scratchwork Development LLC. Retrieved June 17, 2017.
RubyMotion transforms the Ruby source code of your project into ... machine code using a[n] ... ahead-of-time (AOT) compiler, based on LLVM.
- ^ Reedy, Geoff (September 24, 2012). "Compiling Scala to LLVM". St. Louis, Missouri, United States. Retrieved February 19, 2013.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ "xCORE: Multicore theory, hardware and programming (2014-12-01)", Developer Tool xTIMEcomposer, XMOS, December 2014, retrieved March 27, 2021
- ^ Adam Treat (February 19, 2005), mkspecs and patches for LLVM compile of Qt4, archived from the original on October 4, 2011, retrieved January 27, 2012
- ^ "Developer Tools Overview". Apple Developer. Apple. Archived from the original on April 23, 2011.
- ^ Lattner, Chris (December 21, 2011). "The name of LLVM". llvm-dev (Mailing list). Retrieved March 2, 2016.
'LLVM' is officially no longer an acronym. The acronym it once expanded too was confusing, and inappropriate almost from day 1. :) As LLVM has grown to encompass other subprojects, it became even less useful and meaningless.
- ^ Lattner, Chris (June 1, 2011). "LLVM". In Brown, Amy; Wilson, Greg (eds.). The architecture of open source applications. ISBN 978-1257638017.
The name 'LLVM' was once an acronym, but is now just a brand for the umbrella project.
- ^ ""libc++" C++ Standard Library".
- ^ Chris Lattner (April 3, 2014). "The LLVM Foundation". LLVM Project Blog.
- ^ "ACM Software System Award". ACM.
- ^ Wennborg, Hans (September 19, 2019). "[llvm-announce] LLVM 9.0.0 Release".
- ^ "LLVM Developer Policy — LLVM 15.0.0git documentation". llvm.org. Retrieved April 1, 2022.
- ^ "Relicensing Long Tail". foundation.llvm.org. See spreadsheet link.
- ^ Chris Lattner (August 15, 2006). "A cool use of LLVM at Apple: the OpenGL stack". llvm-dev (Mailing list). Retrieved March 1, 2016.
- ^ Michael Larabel, "GNOME 쉘은 GPU 드라이버 지원 없이 작동", phoronix, 2011년 11월 6일
- ^ V. Makarov. "SPEC2000: Comparison of LLVM-2.9 and GCC4.6.1 on x86". Retrieved October 3, 2011.
- ^ V. Makarov. "SPEC2000: Comparison of LLVM-2.9 and GCC4.6.1 on x86_64". Retrieved October 3, 2011.
- ^ Michael Larabel (December 27, 2012). "LLVM/Clang 3.2 Compiler Competing With GCC". Retrieved March 31, 2013.
- ^ Lattner, Chris; Vikram Adve (May 2003). Architecture For a Next-Generation GCC. First Annual GCC Developers' Summit. Retrieved September 6, 2009.
- ^ "LLVM Compiler Overview". developer.apple.com.
- ^ "Xcode 5 Release Notes". Apple Inc.
- ^ "Clang 3.8 Release Notes". Retrieved August 24, 2016.
- ^ "Compiling Haskell To LLVM". Retrieved February 22, 2009.
- ^ "LLVM Project Blog: The Glasgow Haskell Compiler and LLVM". May 17, 2010. Retrieved August 13, 2010.
- ^ 상세한 것에 대하여는, llvm.org/docs/LangRef.html 를 참조해 주세요.
- ^ Kang, Jin-Gu. "Wordcode: more target independent LLVM bitcode" (PDF). Retrieved December 1, 2019.
- ^ "PNaCl: Portable Native Client Executables" (PDF). Archived from the original (PDF) on 2 May 2012. Retrieved 25 April 2012.
- ^ "MLIR". mlir.llvm.org. Retrieved June 7, 2022.
- ^ "Dialects - MLIR". mlir.llvm.org. Retrieved June 7, 2022.
- ^ Stellard, Tom (March 26, 2012). "[LLVMdev] RFC: R600, a new backend for AMD GPUs". llvm-dev (Mailing list).
- ^ "User Guide for AMDGPU Backend — LLVM 15.0.0git documentation".
- ^ 대상별 구현 주의사항: 대상 기능 매트릭스 // LLVM 대상 독립 코드 생성기, LLVM 사이트.
- ^ "Remove the mblaze backend from llvm". GitHub. July 25, 2013. Retrieved January 26, 2020.
- ^ "Remove the Alpha backend". GitHub. October 27, 2011. Retrieved January 26, 2020.
- ^ "[Nios2] Remove Nios2 backend". GitHub. January 15, 2019. Retrieved January 26, 2020.
- ^ "lld - The LLVM Linker". The LLVM Project. Retrieved May 10, 2017.
- ^ "WebAssembly lld port".
- ^ "42446 – lld can't handle gcc LTO files". bugs.llvm.org.
- ^ ""libc++" C++ Standard Library".
- ^ "Polly - Polyhedral optimizations for LLVM".
- ^ "llvm-libc: An ISO C-conformant Standard Library — libc 15.0.0git documentation". libc.llvm.org. Retrieved July 18, 2022.
- ^ "Clang Language Extensions". Clang 12 documentation.
Note that marketing version numbers should not be used to check for language features, as different vendors use different numbering schemes. Instead, use the Feature Checking Macros.
- ^ "apple/llvm-project". Apple. September 5, 2020.
- ^ "Intel C/C++ compilers complete adoption of LLVM". Intel. Retrieved August 17, 2021.
- ^ "lanl/kitsune". Los Alamos National Laboratory. February 27, 2020.
- ^ Developer Toolchain for ps4 (PDF), retrieved February 24, 2015
- ^ "NVVM IR Specification 1.5".
The current NVVM IR is based on LLVM 5.0
- ^ "IBM C/C++ and Fortran compilers to adopt LLVM open source infrastructure".
- ^ Chris Lattner (March 15, 2012). "Chapter 11". The Architecture of Open Source Applications. Amy Brown, Greg Wilson. ISBN 978-1257638017.