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.