Reference¶
LLVM and API reference documentation.
API Reference¶
Doxygen generated documentation : (classes)
How To Use Attributes : Answers some questions about the new Attributes infrastructure.
LLVM Reference¶
Command Line Utilities¶
LLVM Command Guide : A reference manual for the LLVM command line utilities (“man” pages for LLVM tools).
llvm-reduce : Automatic bug finder and test-case reducer description and usage information.
Using -opt-bisect-limit to debug optimization errors : A command line option for debugging optimization-induced failures.
Symbolizer Markup Format
: A reference for the log symbolizer markup accepted by llvm-symbolizer.
The Microsoft PDB File Format : A detailed description of the Microsoft PDB (Program Database) file format.
Garbage Collection¶
Garbage Collection with LLVM : The interfaces source-language compilers should use for compiling GC’d programs.
Garbage Collection Safepoints in LLVM : This describes a set of experimental extensions for garbage collection support.
LibFuzzer¶
libFuzzer – a library for coverage-guided fuzz testing. : A library for writing in-process guided fuzzers.
Fuzzing LLVM libraries and tools : Information on writing and using Fuzzers to find bugs in LLVM.
LLVM IR¶
LLVM Language Reference Manual : Defines the LLVM intermediate representation and the assembly form of the different nodes.
Undefined Behavior (UB) : A guide on what UB/undef/poison are and when to use each one.
Design and Usage of the InAlloca Attribute
: Description of the inalloca argument attribute.
LLVM Bitcode File Format : This describes the file format and encoding used for LLVM “bc” files.
Machine IR (MIR) Format Reference Manual : A reference manual for the MIR serialization format, which is used to test LLVM’s code generation passes.
Global Instruction Selection : This describes the prototype instruction selection replacement, GlobalISel.
Convergent Operation Semantics
: Description of convergent operation semantics and related intrinsics.
Testing and Debugging¶
LLVM Testing Infrastructure Guide : A reference manual for using the LLVM testing infrastructure.
test-suite Guide : Describes how to compile and run the test-suite benchmarks.
GWP-ASan : A sampled heap memory error detection toolkit designed for production use.
XRay¶
XRay Instrumentation : High-level documentation of how to use XRay in LLVM.
Debugging with XRay : An example of how to debug an application with XRay.
Additional Topics¶
FaultMaps and implicit checks : LLVM support for folding control flow into faulting machine instructions.
LLVM Atomic Instructions and Concurrency Guide : Information about LLVM’s concurrency model.
Exception Handling in LLVM : This document describes the design and implementation of exception handling in LLVM.
LLVM Extensions : LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
How to set up LLVM-style RTTI for your class hierarchy
: How to make isa<>, dyn_cast<>, etc. available for clients of your
class hierarchy.
LLVM Block Frequency Terminology
: Provides information about terminology used in the BlockFrequencyInfo
analysis pass.
LLVM Branch Weight Metadata : Provides information about Branch Prediction Information.
The Often Misunderstood GEP Instruction : Answers to some very frequent questions about LLVM’s most frequently misunderstood instruction.
Scudo Hardened Allocator
: A library that implements a security-hardened malloc().
Memory Model Relaxation Annotations : Target-defined relaxation to LLVM’s concurrency model.
MemTagSanitizer : Security hardening for production code aiming to mitigate memory related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension.
Dependence Graphs : A description of the design of the various dependence graphs such as the DDG (Data Dependence Graph).
Speculative Load Hardening : A description of the Speculative Load Hardening mitigation for Spectre v1.
Segmented Stacks in LLVM : This document describes segmented stacks and how they are used in LLVM.
LLVM’s Optional Rich Disassembly Output : This document describes the optional rich disassembly output syntax.
Stack maps and patch points in LLVM : LLVM support for mapping instruction addresses to the location of values and allowing code to be patched.
Coroutines in LLVM : LLVM support for coroutines.
Pointer Authentication : A description of pointer authentication, its LLVM IR representation, and its support in the backend.
YAML I/O : A reference guide for using LLVM’s YAML I/O library.
Convergence And Uniformity : A description of uniformity analysis in the presence of irreducible control flow, and its implementation.
Machine Learning - Guided Optimization (MLGO) : Facilities for ML-Guided Optimization, such as collecting IR corpora from a build, interfacing with ML models, an exposing features for training.
Content Addressable Storage : A reference guide for using LLVM’s CAS library.
LLVM CI Best Practices : A list of guidelines and best practices to use when working on LLVM’s CI systems.
