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 MLIR subproject aims to address software fragmentation, compilation for heterogeneous hardware, significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers.
  • 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 projects that use components of LLVM for various tasks.
lightbulb_outline View ideas list

Technologies

  • llvm
  • c/c++
  • clang
  • mlir

Topics

comment IRC Channel
email Mailing list
mail_outline Contact email

The LLVM Compiler Infrastructure 2021 Projects

  • Soham Dixit
    Distributed lit testing
    The LLVM lit test suites consist of thousands of small independent tests. Due to the number of tests, it can take a long time to run the full suite,...
  • Omar Emara
    Evolving the LLDB GUI
    The project aims to improve the LLDB curses GUI to provide a complete and intuitive IDE-like debugging experience without having to resort to the...
  • Krishna Kariya
    Fix Fundamental Issues in LLVM IR
    LLVM Project is a collection of modular and reusable compiler and toolchain technologies. It supports various high-level languages and hardware...
  • Hyeongyu Kim
    Fix miscompilation issues in LLVM IR using the ‘Freeze’ instruction
    Optimizations have been the cause of multiple miscompilations as well. It is difficult to determine whether an optimization is correct because bugs...
  • George Mitenkov
    Fixing fundamental issues in LLVM IR: Introducing a byte type to solve load type punning
    It is common for compilers, and LLVM in particular, to transform calls to memcpy or memmove to a number of integer loads and stores of the...
  • Kuter Dinel
    Improve inter-procedural analyses and optimizations
    In this project we aim to improve the deduction capabilities of the Attributor framework.
  • Konstantin Sidorov
    Improving OpenMP code generation with prediction of runtime parameters
    The performance of the code generated for the GPU heavily depends on runtime parameters such as the number of thread blocks and threads per thread...
  • Liq Tao
    Inlining: using locally optimal inlining decisions
    Improve inlining: using subgraph analyze and locally optimal inlining decisions
  • Pratyush Das
    Integrate custom derivatives of Numerical Computing routines like BLAS and Eigen into Enzyme
    Enzyme performs automatic differentiation (in the calculus sense) of LLVM programs. This enables users to use Enzyme to perform various algorithms...
  • Chuyang Chen
    Integrate Enzyme into Rust to Provide High-performance Differentiation in Rust
    With a surge of machine learning, especially the neural network model which needs to compute a huge amount of gradients, more and more languages'...
  • Manuel Drehwald
    Integrating Enzyme into Rust
    Integrate Enzyme into Rust to provide high-performance differentiation of generic Rust code.
  • Ali Sedaghati
    Learning Loop Transformation Heuristics
    In this project we will look at loop transformation heuristics, such as the unroll factor.
  • Tarindu Jayatilaka
    Machine Learning Guided Ordering of Compiler Optimization Passes
    Developers generally use standard optimization pipelines like -O2 and -O3 to optimize their code. Manually crafted heuristics are used to determine...
  • Deep Majumder
    Making Smart Pointer Checkers default checkers in the Static Analyzer
    The Clang Static Analyzer currently has checkers for std::unique_ptr. These checkers are currently in the experimental (alpha) group of checkers. I...
  • Riccardo Mori
    Use official isl C++ bindings for polly
    Polly uses custom C++ bindings for isl (Integer Set Library) which is a library written in C. I aim to replace at least partially the usage of these...
  • Toshiki Maekawa
    Utilize LoopNest Pass
    A newly added idea of LoopNest pass enables to handle a loop nest efficiently, unlike function pass or loop pass. The goals of this project are: ...
close

2021