← Back
Home › Systems › Compilers and language tooling

compiler

optimizing compiler toolchain

LLVM

SystemTechniques · 19Primitives · 33 compiler Alias analysiscompilers · medium: Decide whether two pointers may refer to the same memory (Andersen, Steensgaard, type-based) to enable optimizationsAuto vectorizationcompilers · medium: Loop and SLP vectorization: dependence tests, cost model, turning scalar code into SIMDDataflow analysiscompilers · medium: Compute a fact per program point (live variables, reaching definitions, available expressions) by iterating transfer functions over the CFG to a fixed point.›Debug info (DWARF)compilers · medium: DWARF stores a tree of typed entries (DIEs), a line-number bytecode, unwind tables and location expressions that map machine state back to source; pick it for ELF/Mach-O debug builds.›Function inliningcompilers · medium: Inline call sites by cost model and call-graph order; enables downstream optimizationsGlobal value numberingcompilers · medium: Detect equivalent computations in SSA form to remove redundancyInstruction schedulingcompilers · medium: List scheduling over dependence DAGs with latency models; software pipelining of loopsSSA formcompilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.›Dominator treecompilers · low: Dominators via Lengauer-Tarjan or Cooper-Harvey-Kennedy; dominance frontiers for SSAMachine code emissioncompilers · low: Encode instructions to bytes for x86-64 and AArch64, branch relaxation, constant poolsRecursive-descent parsingcompilers · low: Hand-written top-down parser with one function per grammar rule; simple, fast, with full control over error messages and recovery.›Calling conventions abicompilers · low: System V, Windows x64 and AAPCS64 ABIs: argument registers, stack frames, struct passing, FFIPeephole optimizationcompilers · low: Local pattern rewrites on short instruction windows or IRUnion-findgraphs · low: Disjoint-set forest with union by size and path compression; merges sets and answers same-set queries in effectively constant time.›SIMD programminghardware-os · low: Process 4-16 lanes per instruction with AVX2, AVX-512 or NEON via Rust std::arch, with runtime dispatch and a portable fallback.›Control-flow graphcompilers · low: Split a linear instruction list into basic blocks and connect them by jumps; the graph every optimizer, SSA builder and dataflow pass walks.›Topological sortgraphs · low: Order the vertices of a DAG so every edge points forward; the core of build systems, schedulers and dependency resolution, with cycle detection for free.›Executable formats elf pecompilers · low: ELF, PE and Mach-O: sections, segments, symbol tables, relocations, dynamic loadingVarint (LEB128)compression · low: Variable-length integers in 7-bit groups with a continuation bit; small numbers take 1 byte, the wire format of Protobuf, WebAssembly and DWARF.›Strongly connected componentsgraphs · low: Tarjan/Kosaraju SCCs for cycle detection in dependency graphsHash consingdata-structures · low: Intern structurally equal immutable terms so equality is pointer comparison and sharing is maximald-ary heapdata-structures · low: Array heap with d children per node (d = 4 typical): half the binary heap's depth, siblings in one cache line, faster priority queues.›Instruction pipelininghardware-os · low: Pipeline stages, hazards, forwarding and stalls in CPU cores+ 12 more techniques+ 17 more primitives

Similar systems

Share the most building blocks with this one.