Catching Memory Corruption with LLVM AddressSanitizer
Learn how LLVM's AddressSanitizer uses shadow memory and redzones to turn silent memory corruption into immediate, actionable crash reports in C/C++.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
Learn how LLVM's AddressSanitizer uses shadow memory and redzones to turn silent memory corruption into immediate, actionable crash reports in C/C++.
Learn how to break translation unit boundaries using LLVM Link Time Optimization (LTO) to reduce binary size and improve performance through cross-module inlining.
Learn how ThinLTO delivers most link‑time optimization benefits while keeping incremental link times low, with requirements, minimal design, trust boundaries, checks, failure modes, and triggers for redesign.
Learn how LLVM's ThinLTO balances performance, memory, and build time for large codebases. A concrete example, trade‑offs, and step‑by‑step guidance help you decide whether ThinLTO is right for your release workflow.
Learn how LLVM's SelectionDAG transforms high-level IR into target-specific machine instructions through legalization, pattern matching, and DAG combining.
ThinLTO splits LLVM's whole-program optimization into a fast summary phase and parallel backend workers, avoiding the memory explosion of monolithic LTO. This post shows how to integrate it into CMake/Ninja, verify cross-TU inlining, and navigate cache, debug-info, and sanitizer trade-offs.
Use Clang ThinLTO to get most link-time optimization benefits without full LTO's link-time and memory costs. Learn when to choose it and how to verify results.
Stop treating your C++ files as isolated islands. Learn how LLVM Link Time Optimization (LTO) and ThinLTO break the translation unit barrier to enable global inlining and faster binaries.
Stop hardcoding instruction weights in your LLVM passes. Learn how to use TargetTransformInfo (TTI) to make architecture-aware optimization decisions that scale across different CPUs.