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.

Clang is an "LLVM native"
C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles
(e.g. about 3x faster than GCC when
compiling Objective-C code in a debug configuration), extremely useful error and warning messages
and to provide a platform for building great source level tools. The
Clang Static Analyzer is a
tool that automatically finds bugs in your code, and is a great example of the
sort of tool that can be built using the Clang frontend as a library to
parse C/C++ code.

The LLDB project 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.

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

The compiler-rt project
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.

The OpenMP subproject
provides an OpenMP runtime for use with the
OpenMP implementation in Clang.

The polly project implements
a suite of cache-locality optimizations as well as auto-parallelism and
vectorization using a polyhedral model.

The klee project 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.

The SAFECode
project is a memory safety compiler for C/C++ programs. It instruments
code with run-time checks to detect memory safety errors (e.g., buffer
overflows) at run-time. It can be used to protect software from
security attacks and can also be used as a memory safety error debugging
tool like Valgrind.

The LLD project is a new
linker. That is a drop-in replacement for system linkers
and runs much faster.

In addition to official subprojects of LLVM, there are a broad variety of
other projects that use components
of LLVM for various tasks. Through these external projects you can use
LLVM to compile Ruby, Python, Haskell, Java, D, PHP, Pure, Lua, 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 the LLVM Blog and to sign up for the LLVM Developer mailing
list. For information on how to send in a patch, get commit access, and
copyright and license topics, please see the
LLVM Developer Policy.

LLVM has been awarded the 2012 ACM Software System Award!
This award is given by ACM to one software 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.

GitHub Migration

The LLVM Project is migrating its source code from SVN to GitHub. SVN will
be retired on Oct 21, 2019. Visit the
GitHub Migration Status page for
more information.