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 bugpoint tool: design and usage
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.
- 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.
- 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.
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().
- 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.