Reference¶
LLVM and API reference documentation.
API Reference¶
- Doxygen generated documentation
 - (classes)
 - How To Use Attributes
 - Answers some questions about the new Attributes infrastructure.
 
- ORC Design and Implementation
 - Describes the design and implementation of the ORC APIs, including some usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
 
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 
inallocaargument 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 
BlockFrequencyInfoanalysis 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.
 - YAML I/O
 - A reference guide for using LLVM’s YAML I/O library.
 
