llvm/llvm-project
Glossary
LLVM has its own dialect of compiler vocabulary — some terms are widely used across compiler textbooks, and some are specific to this codebase. The following entries are the ones most likely to confuse a new contributor.
| Term | Meaning |
|---|---|
| LLVM IR | The intermediate representation that flows from front end to back end. Strongly typed, SSA, three-address. Lives as in-memory llvm::Module, bitcode, or textual .ll. See llvm/include/llvm/IR/. |
| SSA | Static Single Assignment. Every value is defined exactly once. The LLVM optimizer relies on SSA invariants. |
| Module | A llvm::Module (llvm/include/llvm/IR/Module.h) is roughly the IR equivalent of one translation unit: a collection of functions, globals, and metadata. |
| Pass | A transformation or analysis over IR (or MachineFunction). Run by the pass manager in llvm/lib/Passes/. |
| New PM | The "new pass manager", the current pass-manager API based on PassManager<> templates and PassBuilder. The "legacy PM" still exists for the codegen pipeline. |
| MIR | Machine IR — MachineFunction, MachineBasicBlock, MachineInstr. The IR used inside the back end after instruction selection. Serializable as .mir YAML. See llvm/include/llvm/CodeGen/. |
| MC | The "machine code" layer — target-independent assembler/disassembler/object-file machinery in llvm/lib/MC/. |
| MCA | LLVM Machine Code Analyzer (llvm/lib/MCA/) — performance analysis tool that simulates a CPU pipeline. |
TableGen / .td |
LLVM's data-description DSL. Used for instruction definitions, register classes, intrinsics, attributes, schedulers, ISel patterns, etc. Source in *.td files; build-time tool is llvm-tblgen (llvm/utils/TableGen/). |
| TargetMachine / Subtarget | Per-target classes describing CPU features and code-generation options (llvm/lib/Target/<Name>/). |
| GlobalISel | A modern instruction-selection framework in llvm/lib/CodeGen/GlobalISel/. Built around MachineIRBuilder and matchers. |
| SelectionDAG | The original instruction selector framework (llvm/lib/CodeGen/SelectionDAG/), still used by most targets. |
| MLIR | Multi-Level Intermediate Representation. A separate IR framework in mlir/ that supports user-defined "dialects". |
| Dialect | An MLIR concept — a namespaced collection of operations, types, and attributes. Examples: llvm, linalg, tensor, func. |
| Operation / Op | The MLIR equivalent of an instruction. Generic mlir::Operation plus dialect-specific C++ wrappers. |
| lit | The LLVM Integrated Tester (llvm/utils/lit/). Drives test files by extracting RUN: directives and shelling out commands. |
| FileCheck | A pattern-matching tool (llvm/utils/FileCheck/, library at llvm/lib/FileCheck/) used by lit tests to assert on compiler output. |
| opt | The LLVM IR optimizer driver (llvm/tools/opt/). |
| llc | The LLVM static codegen driver (llvm/tools/llc/) — runs the back end and emits assembly or object code. |
| clang driver | The user-facing executable that picks subcommands (preprocessor, compiler, assembler, linker) based on the input. Source in clang/lib/Driver/ and clang/tools/driver/. |
| clangd | The LSP language server in clang-tools-extra/clangd/ that powers IDE features. |
| Sema / AST / CodeGen (in Clang) | Three of Clang's main libraries: clang/lib/Sema/ (semantic analysis), clang/lib/AST/ (the C/C++/Objective-C AST), clang/lib/CodeGen/ (lower AST to LLVM IR). |
| CFE | "C front end" — historical alias for Clang. Still appears in commit messages and bug reports. |
| lld | The LLVM linker (lld/). Has separate ports for ELF, COFF, Mach-O, and WebAssembly. |
| lldb | The LLVM debugger (lldb/). |
| compiler-rt | The compiler runtime (compiler-rt/) — provides intrinsics like __udivsi3 plus the sanitizer runtimes (ASan, TSan, MSan, UBSan, etc.). |
| libc++ / libcxx | LLVM's C++ standard library implementation (libcxx/). |
| libc++abi / libcxxabi | LLVM's C++ ABI runtime (libcxxabi/) that pairs with libc++. |
| libunwind | LLVM's Itanium-ABI stack-unwinding library (libunwind/). |
| libc | LLVM's C standard library (libc/) — distinct from glibc/musl. |
| BOLT | Binary Optimization and Layout Tool (bolt/) — a post-link optimizer that rewrites code layout based on profile data. |
| ORC / ORCv2 | "On-Request Compilation". The current LLVM JIT framework (llvm/lib/ExecutionEngine/Orc/ and the orc-rt/ runtime). |
| ThinLTO | A scalable form of link-time optimization (llvm/lib/LTO/). |
| DTLTO | Distributed ThinLTO (llvm/lib/DTLTO/) — runs ThinLTO across a build farm. |
| PGO | Profile-Guided Optimization. Source in llvm/lib/Transforms/Instrumentation/ and compiler-rt/lib/profile. |
| PDB / DWARF | Debug-info formats. DWARF code: llvm/lib/DebugInfo/. PDB code lives there too. |
| CIR | Clang IR — an MLIR dialect Clang can emit between AST and LLVM IR. See clang/lib/CIR/. |
| Polly | A polyhedral loop optimizer (polly/) that hooks into LLVM as a transform-pass plugin. |
| OpenMP | Both the language extension and a runtime. Runtime lives in openmp/; device-side execution lives in offload/. |
| SYCL | A Khronos C++ programming model for accelerators. The libsycl/ subproject is LLVM's runtime implementation. |
| OpenCL C | A C dialect for accelerator kernels. The libclc/ library implements its standard library. |
| flang-rt | The Fortran runtime (flang-rt/) used by code that Flang compiles. |
| target triple | A <arch>-<vendor>-<os>-<env> string that fully identifies a compilation target (e.g., x86_64-unknown-linux-gnu, aarch64-apple-darwin). |
| ABI | Application Binary Interface — the rules for how compiled code interoperates (calling conventions, struct layout, name mangling, exception unwinding). |
| maintainer | The person or persons responsible for an area, listed in the per-subproject Maintainers.md. They merge and review code in their area. See the LLVM developer policy. |
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.
Previous
Getting started
Next
By the numbers