TheLLVMCompiler Infrastructure
Site Map:
Download!
Search this Site


Useful Links
Release Emails
19.1.2:Oct 2024 19.1.1:Oct 2024 19.1.0:Sep 2024 18.1.8:Jun 2024
18.1.7:Jun 2024
18.1.6:May 2024
18.1.5:May 2024
18.1.4:Apr 2024
18.1.3:Apr 2024
18.1.2:Mar 2024
18.1.1:Mar 2024
18.1.0:Mar 2024
17.0.6:Nov 2023
17.0.5:Nov 2023
17.0.4:Oct 2023
17.0.3:Oct 2023
17.0.2:Oct 2023
17.0.1:Sep 2023
All Announcements

Maintained by the
llvm-admin team
LLVM Overview

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines. The name "LLVM" itself is not an acronym; it is the full name of the project.

LLVM began as aresearch projectat theUniversity of Illinois,with the goal of providing a modern, SSA-based compilation strategy capable of supporting both static and dynamic compilation of arbitrary programming languages. Since then, LLVM has grown to be an umbrella project consisting of a number of subprojects, many of which are being used in production by a wide variety of commercial and open sourceprojects as well as being widely used inacademic research.Code in the LLVM project is licensed under the "Apache 2.0 License with LLVM exceptions"

The primary sub-projects of LLVM are:

  1. TheLLVM Corelibraries provide a modern source- and target-independentoptimizer,along with code generation supportfor many popular CPUs (as well as some less common ones!) These libraries are built around awell specifiedcode representation known as the LLVM intermediate representation ( "LLVM IR" ). The LLVM Core libraries arewell documented,and it is particularly easy to invent your own language (or port an existing compiler) to use LLVM as an optimizer and code generator.

  2. Clangis an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles, extremely usefulerror and warning messagesand to provide a platform for building great source level tools. TheClang Static Analyzerand clang-tidyare tools that automatically find bugs in your code, and are great examples of the sort of tools that can be built using the Clang frontend as a library to parse C/C++ code.

  3. TheLLDBproject builds on libraries provided by LLVM and Clang to provide a great native debugger. It uses the Clang ASTs and expression parser, LLVM JIT, LLVM disassembler, etc so that it provides an experience that "just works". It is also blazing fast and much more memory efficient than GDB at loading symbols.

  4. Thelibc++and libc++ ABIprojects provide a standard conformant and high-performance implementation of the C++ Standard Library, including full support for C++11 and C++14.

  5. Thecompiler-rtproject provides highly tuned implementations of the low-level code generator support routines like "__fixunsdfdi"and other calls generated when a target doesn't have a short sequence of native instructions to implement a core IR operation. It also provides implementations of run-time libraries for dynamic testing tools such as AddressSanitizer, ThreadSanitizer, MemorySanitizer, and DataFlowSanitizer.

  6. TheMLIRsubproject is a novel approach to building reusable and extensible compiler infrastructure. MLIR aims to address software fragmentation, improve compilation for heterogeneous hardware, significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers together.

  7. TheOpenMPsubproject provides anOpenMPruntime for use with the OpenMP implementation in Clang.

  8. Thepollyproject implements a suite of cache-locality optimizations as well as auto-parallelism and vectorization using a polyhedral model.

  9. Thelibclcproject aims to implement the OpenCL standard library.

  10. Thekleeproject implements a "symbolic virtual machine" which uses a theorem prover to try to evaluate all dynamic paths through a program in an effort to find bugs and to prove properties of functions. A major feature of klee is that it can produce a testcase in the event that it detects a bug.

  11. TheLLDproject is a new linker. That is a drop-in replacement for system linkers and runs much faster.

  12. The BOLT project is a post-link optimizer. It achieves the improvements by optimizing application's code layout based on execution profile gathered by sampling profiler.

In addition to official subprojects of LLVM, there are a broad variety of other projects thatuse components of LLVM for various tasks.Through these external projects you can use LLVM to compile Ruby, Python, Haskell, Rust, D, PHP, Pure, Lua, Julia, and a number of other languages. A major strength of LLVM is its versatility, flexibility, and reusability, which is why it is being used for such a wide variety of different tasks: everything from doing light-weight JIT compiles of embedded languages like Lua to compiling Fortran code for massive super computers.

As much as everything else, LLVM has a broad and friendly community of people who are interested in building great low-level tools. If you are interested in getting involved,a good first place is to skim theLLVM Blogand joinLLVM Discourse.For information on how to send in a patch, get commit access, and copyright and license topics, please seethe LLVM Developer Policy.

Latest LLVM Release!

15 Oct 2024:LLVM 19.1.2 is nowavailable for download!LLVM is publicly available under an open sourceLicense.Also, you might want to check outthe new featuresin Git that will appear in the next LLVM release. If you want them early,download LLVMthrough anonymous Git.

Upcoming Events

October 22-24- 2024 LLVM Dev Mtg

ACM Software System Award!

LLVM has been awarded the2012 ACM Software System Award! This award is given by ACM toonesoftware system worldwide every year. LLVM is in highly distinguished company! Click on any of the individual recipients' names on that page for the detailed citation describing the award.

Upcoming Releases

LLVM Release Schedule:

  • 19.1.x
    • Jul 23rd: release/19.x branch created
    • Jul 26th: 19.1.0-rc1 was released
    • Aug 6th: 19.1.0-rc2 was released
    • Aug 20th: 19.1.0-rc3 was released
    • Sep 3rd: 19.1.0-rc4 was released
    • Sep 17th: 19.1.0 was released
    • Oct 1st: 19.1.1 was released
    • Oct 15th: 19.1.2 was released
    • Oct 29th: 19.1.3
    • Nov 12th: 19.1.4
    • Nov 26th: 19.1.5
    • Dec 10th: 19.1.6 (if necessary)
Developer Meetings