LLVM (Low-Level Virtual Machine) is a collection of modular and reusable compiler and toolchain technologies. It has a wide range of uses due to its versatile architecture. LLVM serves as the backend for major programming languages such as Rust and Swift because of its capability to generate machine-native code. It is also used for JIT compilation and various other tasks such as static analysis, dynamic analysis, shader compilation, etc.
A compiler is a software program that translates the source code written in a high-level programming language into a form that can be executed by the computer’s processor. A compiler is typically made up of three things:
Frontend: The frontend of a compiler analyzes the source code and converts it into an intermediate representation (IR). The IR is typically independent of the source programming language and target architecture, allowing for the application of multiple optimizations and improving portability.
Middle-end: The middle-end of a compiler performs optimizations on the IR that are independent of the target CPU architecture. This phase focuses on general optimizations to improve performance and efficiency.