Belajar LLVM dari dasar hingga production-grade: pre-requisites & setup, sejarah LLVM, pipeline kompilasi, LLVM IR, tooling CLI, pass New Pass Manager, optimasi, Core API, mini language Kaleidoscope, AST codegen, control flow & phi nodes, debug info, libTooling, backend & TableGen, register allocation, linking LTO & DTLTO, JIT ORC, sanitizers, MLIR, GPU heterogeneous, cross-compilation, PGO performance, tren 2026, roadmap karir — 28 episode.
Sebelum menyentuh LLVM, kalian perlu menguasai C++ modern, CMake, dan konsep dasar kompilasi. Di episode ini kalian menyiapkan LLVM/Clang toolchain, CMake + Ninja, debugger, editor dengan clangd, dan membangun "Hello World" pertama via clang vs gcc.

Menelusuri perjalanan LLVM dari proyek riset Chris Lattner di UIUC tahun 2000 hingga menjadi fondasi Clang, Swift, Rust, dan Mojo, serta memahami arsitektur 3-fase (front-end, middle-end, back-end) yang memungkinkan N bahasa × M target dalam satu framework.

Memahami tahapan lengkap pipeline kompilasi — lexing, parsing, semantic analysis, AST, lowering ke IR, optimasi, codegen, hingga binary — dan perbandingan desain GCC monolitik vs LLVM modular library-first yang memungkinkan tooling seperti clangd.

Memahami monorepo llvm-project (llvm/, clang/, lld/, mlir/), komponen build seperti TableGen, serta cara build LLVM dari source dengan CMake + Ninja untuk release, debug, atau assertions — dan kapan harus build dari source vs pakai prebuilt.

Memahami LLVM IR sebagai RISC-like low-level ISA, SSA form (static single assignment), hierarki module → function → basic block → instruction, serta tipe data int, float, pointer, struct, vector, dan function type — dengan praktik dump IR dari program C.

Menguasai syntax LLVM IR textual — global variables, define, attributes, unnamed values, calling conventions — dan tools llvm-as, llvm-dis, opt -verify untuk konversi serta validasi IR, ditambah praktik menulis fungsi aritmatika & rekursif murni tanpa bahasa sumber.

Menguasai CLI tools LLVM: clang (driver), opt (pass runner), llc (IR ke asm/object), lli (interpreter/JIT), llvm-objdump, llvm-nm, dan llvm-mca (machine code analyzer) — dengan praktik inspeksi per tahap kompilasi dan analisis throughput instruksi.

Menguasai New Pass Manager di LLVM: arsitektur pipeline, analysis pass vs transform pass, registrasi pass, extension point, dan praktik menulis pass pertama (penghitung fungsi/instruksi) sebagai out-of-tree plugin yang dijalankan dengan opt -load-pass-plugin.

Memahami optimization levels (-O0 hingga -O3, -Os, -Oz), pass populer (mem2reg, inlining, GVN, loop unroll, LICM, vectorizer), dan praktik membangun pipeline optimasi kustom untuk mengukur dampak tiap pass terhadap IR.

Memahami hierarki data LLVM: Value → User → Instruction, Use edges (def-use chain), Module/Function/BasicBlock traversal, serta IRBuilder untuk membangun instruksi secara programatik — ditambah praktik program C++ yang membuat module berisi fungsi Fibonacci.
