LLVM Compiler Infrastructure

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. LLVM began as a research project at the University 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 different subprojects, many of which are being used in production by a wide variety of commercial and open source projects as well as being widely used in academic research.

The primary sub-projects of LLVM are:

  • The LLVM Core libraries provide a modern source- and target-independent optimizer, along with code generation support for many popular CPUs. These libraries are built around a well specified code representation known as the LLVM intermediate representation ("LLVM IR").
  • Clang is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles, extremely useful error and warning messages and to provide a platform for building great source level tools. The Clang Static Analyzer is a clang-based tool that automatically finds bugs in your code.
  • The LLDB project builds on libraries provided by LLVM and Clang to provide a great native debugger on top of Clang and LLVM libraries.
  • The libc++ and libc++ ABI projects provide a standard conformant and high-performance implementation of the C++ Standard Library.
  • The polly project implements a suite of cache-locality optimizations as well as auto-parallelism and vectorization using a polyhedral model.
  • The lld project aims to be the built-in linker for clang/llvm. Currently, clang must invoke the system linker to produce executables.

In addition to official subprojects of LLVM, there are a broad variety of other projects that use components of LLVM for various tasks.

lightbulb_outline View ideas list

Technologies

  • llvm
  • clang

Topics

comment IRC Channel
email Mailing list
mail_outline Contact email

LLVM Compiler Infrastructure 2019 Projects

  • Charusso
    Apply the Clang Static Analyzer to LLVM-based projects
    The idea is to improve the Clang Static Analyzer so that it is useful for developers who work on Clang and LLVM themselves, as well as on other...
  • Krist√≥f Umann
    Enhancing bug reports in the Clang Static Analyzer
    The Clang Static Analyzer (analyzer) can discover errors in a code by a technique called symbolic execution. Its core essentially interprets C, C++,...
  • William Moses
    Generation of Annotated Sources
    LLVM automatically derives facts that are only used while the respective translation unit, or LLVM module, is processed (i.e. constant function,...
  • Stefan Stipanovic
    Improve (function) attribute inference
    LLVM functions, as well as arguments and other entities, can be tagged with several attributes such as the function only reads memory, or the...
  • Hideto Ueno
    Improve (function) attribute inference
    LLVM functions can be tagged with several attributes. These attributes are used in optimizations to decide whether a particular transformation is...
  • Seiya Nuta
    Improve LLVM binary utilities
    LLVM includes binary utilities equivalent to GNU binutils. Basic functionalities are done but there are incomplete ones such as Mach-O support. This...
  • Alex Brachet
    libObjectcopy
    Working on librarifying llvm-objcopy for use throughout binutils. Creating a good base for a library such that many object file formats can be added...
  • PreeJackie
    Speculative compilation in LLVM ORC - Just in time APIs
    One of the selling points of new LLVM ORC Concurrent JIT APIs is we can speculatively compile functions before we need it, with the hope that when we...
close

2019