Compiler backend for multiple programming languages
LLVM
The LLVM logo, a stylized wyvern[1]
Original author(s)
Chris Lattner, Vikram Adve
Developer(s)
LLVM Developer Group
Initial release
2003; 21 years ago (2003)
Stable release
18.1.2[2]
/ 19 March 2024
Repository
github.com/llvm/llvm-project
Written in
C++
Operating system
Cross-platform
Type
Compiler
License
UIUC (BSD-style) Apache License 2.0 with LLVM Exceptions (v9.0.0 or later)[3]
Website
www.llvm.org
LLVM is a set of compiler and toolchain technologies[4] that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes.[5] The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.
LLVM is written in C++ and is designed for compile-time, link-time, runtime, and "idle-time" optimization. Originally implemented for C and C++, the language-agnostic design of LLVM has since spawned a wide variety of frontends: languages with compilers that use LLVM (or which do not directly use LLVM but can generate compiled programs as LLVM IR) include ActionScript, Ada, C# for .NET,[6][7][8] Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[9] Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Java bytecode, Julia, Kotlin, LabVIEW's G language,[10][11] Lua, Objective-C, OpenCL,[12] PostgreSQL's SQL and PLpgSQL,[13] Ruby,[14] Rust,[15] Scala,[16][17] Swift, Xojo, and Zig.
^"LLVM Logo". The LLVM Compiler Infrastructure Project.
^"Release 18.1.2". March 19, 2024. Retrieved March 20, 2024.
^"LICENSE.TXT". llvm.org. Retrieved September 24, 2019.
^"The LLVM Compiler Infrastructure Project". Retrieved March 11, 2016.
^"LLVM Language Reference Manual". Retrieved June 9, 2019.
^"Announcing LLILC - A new LLVM-based Compiler for .NET". dotnetfoundation.org. Archived from the original on December 12, 2021. Retrieved September 12, 2020.
^"Mono LLVM". Retrieved March 10, 2013.
^Lattner, Chris (2011). "LLVM". In Brown, Amy; Wilson, Greg (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.
^"NI LabVIEW Compiler: Under the Hood".
^Larabel, Michael (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.
^"Code Generation - Guide to Rustc Development". rust-lang.org. Retrieved January 4, 2023.
^Reedy, Geoff (September 24, 2012). "Compiling Scala to LLVM". St. Louis, Missouri, United States. Retrieved February 19, 2013.
LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction...
Clang operates in tandem with the LLVM compiler back end and has been a subproject of LLVM 2.6 and later. As with LLVM, it is free and open-source software...
November 4, 2019. "llvm-project/llvm/CMakeLists.txt at swift-5.1.3-RELEASE". GitHub. Retrieved March 20, 2020. "llvm-project/llvm/CMakeLists.txt at swift-5...
Retrieved February 20, 2024. "llvm-project/llvm/include/llvm/TargetParser/AArch64TargetParser.h at main · llvm/llvm-project · GitHub". GitHub. November...
in Geekbench", Tom’s Hardware "llvm-project/llvm/include/llvm/TargetParser/AArch64TargetParser.h at main · llvm/llvm-project". GitHub. November 30, 2023...
Retrieved September 14, 2023. "llvm-project/llvm/include/llvm/TargetParser/AArch64TargetParser.h at main · llvm/llvm-project · GitHub". GitHub. November...
2023. Retrieved June 5, 2023. "llvm-project/llvm/include/llvm/TargetParser/AArch64TargetParser.h at main · llvm/llvm-project · GitHub". GitHub. November...
recommends it over other non-copyleft licenses. If the Apache License with the LLVM exception is used, then it is compatible with GPLv2. In October 2012, 8,708...
introduced in 2015. SPIR prior to the 2015 SPIR-V release was based on the LLVM Intermediate Representation. A provisional specification for SPIR 1.0 was...
Retrieved September 29, 2020. "llvm-project/llvm/include/llvm/TargetParser/AArch64TargetParser.h at main · llvm/llvm-project · GitHub". GitHub. November...
supporting C intrinsics. As of July 2020[update], LLVM and clang support C and IR intrinsics. ARM's own fork of LLVM supports auto-vectorization. In October 2016...
computer scientist, former Apple, Google, and Tesla employee and co-founder of LLVM, Clang compiler, MLIR compiler infrastructure and the Swift programming language...
Apple Apple M1 Comparison of Armv8-A processors "llvm-project/AArch64.td at llvm/master · llvm/llvm-project · GitHub". GitHub. Archived from the original...
GPU code, using LLVM, and its AMDGPU backend that was upstreamed, although there is still research on such enhanced modularity with LLVM MLIR. ROCm as a...
Intermediate Layer LLVM Intermediate Representation (converted from GIMPLE in the now-defunct llvm-gcc which uses LLVM optimizers and codegen) The LLVM compiler...
currently developed by Bytecode Alliance. Unlike compiler backends such as LLVM that focus more on ahead-of-time compilation, Cranelift instead focuses on...
2022. Retrieved 31 December 2022. "llvm-project/llvm/include/llvm/TargetParser/AArch64TargetParser.h at main · llvm/llvm-project · GitHub". GitHub. 30 November...
Support in Clang". clang.llvm.org. LLVM Project. Retrieved 2018-03-12. ""libc++" C++ Standard Library". libcxx.llvm.org. LLVM Project. Retrieved 2018-03-12...
buffer overflow protection, including those for the GNU Compiler Collection, LLVM, Microsoft Visual Studio, and other compilers. A stack buffer overflow occurs...
configuration to do so. It uses userland tools from FreeBSD, the musl C library, the LLVM toolchain as the foundation of the system, providing an alternative to GNU-based...